Comment faire pour obtenir l'extension d'un widget à la fois verticale (hauteur) et horizontale (largeur) en direction de

Le code ci-dessous définit un tableau dans lequel j'aurais besoin d'atteindre pour le graphique à être élargi à la fois verticale (hauteur) et horizontale (largeur) de direction. La méthode suggérée (par exemple https://docs.flutter.io/flutter/widgets/Row-class.html) est d'utiliser Expanded dans Row ou Column.

Le graphique widget je suis en train de développer étend CustomPaint, sans enfants, tout est peint à l'aide d'un CustomPainter sur la toile, dans la CustomPainter.paint(canvas, size).

Ce code

return new Scaffold(
  appBar: new AppBar(
    title: new Text(widget.title),
  ),
  body: new Center(    
    child: new Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        new Text(
          'vvvvvvvv:',
        ),
        new RaisedButton(
          color: Colors.green,
          onPressed: _chartStateChanger,
        ),
        new Text(
          'vvvvvvvv:',
        ),    
        new Expanded( //Expanded in Column, no expansion vertically 
          child: new Row(
            children: [
              new Text('>>>'),    
              new Expanded(//Expanded in Row, expands horizontally
                child: new Chart(  //extends CustomPaint
                  //size: chartLogicalSize,
                  painter: new ChartPainter( //extends CustomPainter
                    chartData: _chartData,
                    chartOptions: _chartOptions,
                  ),
                ),
              ),
              new Text('<<<'),
            ],
          ),  //row
        ),
        new Text('^^^^^^:'),
        new RaisedButton(
          color: Colors.green,
          onPressed: _chartStateChanger,
        ),
      ],
    ),
  ),
);

résultat ressemble à ceci: (code de ChartPainter n'est pas indiqué pour des raisons de concision)
Comment faire pour obtenir l'extension d'un widget à la fois verticale (hauteur) et horizontale (largeur) en direction de

À l'intérieur de la ChartPainter.paint(canvas, size) il y a un print() l'impression de la taille.

print(" ### Taille: paint(): adopté taille = ${taille}");

Le résultat de la peinture->print ci-dessus est:

I/flutter ( 4187): ### Taille: paint(): adopté taille = Taille(340.0, 0.0)

L'impression ainsi que le montre l'image, que la largeur de l'expansion sur le niveau de la ligne a été transmis à la CustomPainter.print(canvas, size) (largeur = 340.0), mais la hauteur de l'expansion sur la colonne n'a pas adopté la coutume peintre d'impression (hauteur = 0.0). Bien que le résultat montre que la ligne ne se étendue de la hauteur, si ce n'était pas passée à l'intérieur de la ligne à la CustomPainter - 0 hauteur a été reçu.

De quoi ai-je besoin de changer pour atteindre la hauteur de l'expansion?

Grâce

  • Eh bien, après descendant plus profondément dans l'excellent Flottement de la documentation de l'algorithme de mise en page en docs.flutter.io/flutter/widgets/Row-class.html , je vois que je besoin d'ajouter crossAxisAlignment: CrossAxisAlignment.tronçon de la ligne, comme ceci : new Row( crossAxisAlignment: CrossAxisAlignment.stretch, <- added line children: [
  • Envisager de répondre à votre propre question, si vous êtes satisfait de votre solution.
InformationsquelleAutor mzimmermann | 2017-08-25