To jest odpowiedź uzupełniająca pokazująca implementację kilku z wymienionych rozwiązań.
FractionallySizedBox
Jeśli masz pojedynczy widżet, możesz użyć FractionallySizedBox
widżetu, aby określić procent dostępnego miejsca do wypełnienia. Tutaj zielony Container
jest ustawiony na wypełnienie 70% dostępnej szerokości i 30% dostępnej wysokości.
Widget myWidget() {
return FractionallySizedBox(
widthFactor: 0.7,
heightFactor: 0.3,
child: Container(
color: Colors.green,
),
);
}
Rozszerzony
Expanded
Widget pozwala widget wypełnić dostępną przestrzeń, w poziomie, jeśli jest w rzędzie, albo pionowo, gdy znajduje się on w kolumnie. Możesz użyć tej flex
właściwości z wieloma widżetami, aby nadać im wagi. Tutaj zielony Container
zajmuje 70% szerokości, a żółty Container
30% szerokości.
Jeśli chcesz to zrobić w pionie, a potem po prostu wymienić Row
się Column
.
Widget myWidget() {
return Row(
children: <Widget>[
Expanded(
flex: 7,
child: Container(
color: Colors.green,
),
),
Expanded(
flex: 3,
child: Container(
color: Colors.yellow,
),
),
],
);
}
Kod dodatkowy
Oto main.dart
kod w celach informacyjnych.
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 ...
}