2017-10-02 31 views
0

Ich verwende den folgenden Code, um die Größe eines widget zu bekommen:Falsche Größe für falsche Orientierung in Flutter

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

Wenn jedoch eine Drehung passiert, es gibt immer die Größe der vorherigen Orientierung (für Beispiel, wenn es sich in die Landschaft dreht, gibt es mir die Größe der Hochformatdarstellung und umgekehrt). Gibt es eine andere Möglichkeit, die Größe eines Widgets für die Ausrichtung zu ändern?

Antwort

2

Die Größe wird zur Layout-Zeit festgelegt, aber Ihre build-Methode wird vor dem Build-Zeitpunkt aufgerufen. Die Einschränkungen Ihres Widgets sind jedoch zum Zeitpunkt der Erstellung verfügbar. In den meisten Fällen müssen Sie nur erraten, wie groß Ihre Größe ist. Verwenden Sie eine LayoutBuilder, um die Einschränkungen zu lesen.

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

Yesss das ist, was mir fehlte! Vielen Dank! – user3217522

Verwandte Themen