Dies ist eine ergänzende Antwort, die die Implementierung einiger der genannten Lösungen zeigt.
FractionallySizedBox
Wenn Sie ein einzelnes Widget haben, können Sie mithilfe eines FractionallySizedBoxWidgets einen Prozentsatz des verfügbaren zu füllenden Speicherplatzes angeben. Hier wird das Grün Containerso eingestellt, dass es 70% der verfügbaren Breite und 30% der verfügbaren Höhe ausfüllt.

Widget myWidget() {
return FractionallySizedBox(
widthFactor: 0.7,
heightFactor: 0.3,
child: Container(
color: Colors.green,
),
);
}
Erweitert
Mit dem ExpandedWidget kann ein Widget den verfügbaren Platz horizontal ausfüllen, wenn es sich in einer Zeile befindet, oder vertikal, wenn es sich in einer Spalte befindet. Sie können die flexEigenschaft mit mehreren Widgets verwenden, um ihnen Gewichte zu geben. Hier nimmt das Grün Container70% der Breite und das Gelb Container30% der Breite ein.

Wenn Sie es vertikal tun wollen, dann ersetzen Sie einfach Rowmit Column.
Widget myWidget() {
return Row(
children: <Widget>[
Expanded(
flex: 7,
child: Container(
color: Colors.green,
),
),
Expanded(
flex: 3,
child: Container(
color: Colors.yellow,
),
),
],
);
}
Ergänzungscode
Hier ist der main.dartCode als Referenz.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("FractionallySizedBox"),
),
body: myWidget(),
),
);
}
}
// replace with example code above
Widget myWidget() {
return ...
}