2017-10-02 2 views
0

J'utilise le code suivant pour obtenir la taille d'un widget:mauvaise taille pour une mauvaise orientation dans Flutter

@override 
Widget build(BuildContext context) { 
    RenderBox renderBox = context.findRenderObject(); 
    Size size = renderBox.size; 
} 

Cependant, lorsqu'une rotation se produit, il retourne toujours la taille de l'orientation précédente (pour par exemple, s'il tourne au paysage, cela me donne la taille de la représentation du portrait et vice versa). Existe-t-il une manière différente d'obtenir la taille d'un widget lors du changement d'orientation?

Répondre

2

La taille est déterminée au moment de la mise en page, mais votre méthode build est appelée avant cela, lors de la génération. Cependant, les contraintes de votre widget sont disponibles au moment de la construction, et la plupart du temps c'est tout ce dont vous avez besoin pour deviner quelle sera votre taille. Utilisez un LayoutBuilder pour lire les contraintes.

screenshot1 screenshot2

import 'package:flutter/material.dart'; 

void main() { 
    runApp(new MyApp()); 
} 

class MyApp extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new MaterialApp(
     home: new MyHomePage(), 
    ); 
    } 
} 

class MyHomePage extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     body: new LayoutBuilder(
     builder: (BuildContext context, BoxConstraints constraints) { 
      return new Text(
      '${constraints.maxWidth}x${constraints.maxHeight}', 
      style: Theme.of(context).textTheme.display3, 
     ); 
     } 
    ), 
    ); 
    } 
} 
+0

Ouiii qui est ce que je manque! Je vous remercie! – user3217522