91 votes

Faire en sorte que le widget du conteneur remplisse le parent verticalement

TL;DR Il faut que le conteneur remplisse l'espace vertical pour qu'il puisse agir comme un écouteur ontap. J'ai essayé la plupart des solutions mais rien ne semble fonctionner.

Ce que j'essaie de faire, c'est de faire en sorte que mon conteneur remplisse l'espace vertical tout en ayant une largeur fixe. Le premier est ce que j'ai et le troisième ce que je veux. . L'idée est d'avoir le conteneur transparent avec un écouteur de geste ontap. Si quelqu'un a une meilleure idée ou une solution différente, n'hésitez pas à la proposer.

Widget build(BuildContext context) {
return new GestureDetector(
  onHorizontalDragUpdate: _move,
  onHorizontalDragEnd: _handleDragEnd,
  child: new Stack(
    children: <Widget>[
      new Positioned.fill(           
        child: new Row(
          mainAxisAlignment: MainAxisAlignment.end,
          children: <Widget>[
            new Container(
              child: new IconButton(                          
                padding: new EdgeInsets.only(top: 16.0, bottom: 16.0, left: 24.0, right: 24.0),
                icon: new Icon(Icons.warning),
                color: Colors.black12,
                onPressed: () {},
              )
            ),
          ],
        ),
      ),
      new SlideTransition(
        position: new Tween<Offset>(
          begin:  Offset(0.0, 0.0),
          end: const Offset(-0.6, 0.0),
        ).animate(_animation),
        child: new Card(
          child: new Row(
            children: <Widget>[
              new Container(
                width: 20.0,
                height: 20.0,
                color: Colors.amber,
              ),
              new Expanded(
                child: new Column(
                  mainAxisSize: MainAxisSize.min,
                  children: <Widget>[

                    _getListTile(),
                    _ifStoplineIsToBeShown()
                  ],
                ),
              )
            ],
          )
        ),
      ),
    ],
  )
);

}

Je suis sûr que j'ai manqué quelque chose, car j'ai essayé beaucoup de choses différentes et rien ne semble fonctionner.

J'ai également téléchargé une image avec le tableau de débogage ici .

PS. Je sais que j'ai défini la hauteur à une valeur fixe, mais c'est la seule façon d'afficher le conteneur.

0 votes

Est onHorizontalDragStart ne pas être appelé ? Et où se trouve votre "largeur fixe" ?

1voto

bulwatam Points 11

Je propose d'utiliser le widget Expanded (qui nous permet d'éviter le widget IntrinsicHeight), de le combiner avec la propriété d'alignement du Container et donc de le faire fonctionner correctement même si le Container n'est pas le seul à l'écran.

Expanded(
  child: Container(
    alignment: Alignment.center,
    child: Text('Your text', textAlign: TextAlign.center))),

De cette façon, on évite également le plantage potentiel de l'application qui se produit souvent lorsque vous étendez accidentellement à l'infini certaines parties de l'arbre des widgets à la fois horizontalement et verticalement (c'est pourquoi vous ne pouvez pas utiliser le widget BoxConstraints dans de nombreux cas).

Pour en savoir plus sur les problèmes liés à la transmission des contraintes dans Flutter, cliquez ici - à lire absolument : https://medium.com/flutter-community/flutter-the-advanced-layout-rule-even-beginners-must-know-edc9516d1a2

1voto

Définir la hauteur ou la largeur d'un conteneur double.maxFinite

Container(
   height: double.maxFinite,
    width: 100,)

Vous pouvez faire en sorte que votre widget prenne toute la taille d'un widget Container, puis définir la hauteur et/ou la largeur du conteneur à double.maxFinite . Le conteneur prendra la hauteur et/ou la largeur de son widget parent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X