Ceci est une réponse supplémentaire montrant la mise en œuvre de quelques-unes des solutions mentionnées.
FractionallySizedBox
Si vous avez un seul widget, vous pouvez utiliser un FractionallySizedBox
widget pour spécifier un pourcentage de l'espace disponible à remplir. Ici, le vert Container
est configuré pour remplir 70% de la largeur disponible et 30% de la hauteur disponible.
Widget myWidget() {
return FractionallySizedBox(
widthFactor: 0.7,
heightFactor: 0.3,
child: Container(
color: Colors.green,
),
);
}
Étendu
Le Expanded
widget permet à un widget de remplir l'espace disponible, horizontalement s'il est dans une ligne, ou verticalement s'il est dans une colonne. Vous pouvez utiliser la flex
propriété avec plusieurs widgets pour leur donner des pondérations. Ici, le vert Container
occupe 70% de la largeur et le jaune Container
30% de la largeur.
Si vous voulez le faire verticalement, remplacez simplement Row
par Column
.
Widget myWidget() {
return Row(
children: <Widget>[
Expanded(
flex: 7,
child: Container(
color: Colors.green,
),
),
Expanded(
flex: 3,
child: Container(
color: Colors.yellow,
),
),
],
);
}
Code supplémentaire
Voici le main.dart
code pour votre référence.
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 ...
}