Bu, bahsedilen çözümlerden birkaçının uygulanmasını gösteren tamamlayıcı bir cevaptır.
KesirliSizeKutu
Tek bir widget'ınız varsa, FractionallySizedBoxdoldurulacak kullanılabilir alanın bir yüzdesini belirtmek için bir widget kullanabilirsiniz . Burada yeşil Container, mevcut genişliğin% 70'ini ve mevcut yüksekliğin% 30'unu dolduracak şekilde ayarlanmıştır.
Widget myWidget() {
return FractionallySizedBox(
widthFactor: 0.7,
heightFactor: 0.3,
child: Container(
color: Colors.green,
),
);
}
Genişletilmiş
ExpandedEklendi bir eklendi bir sütunda ise üst üste olan ya da dikey yatay olarak ise, mevcut alanı doldurmak için izin verir. flexÖzelliği, onlara ağırlık vermek için birden çok widget ile kullanabilirsiniz . Burada yeşil Container, genişliğin% 70'ini ve sarı Container, genişliğin% 30'unu kaplar.
Dikey yapmak istiyorum, o zaman sadece değiştirmek Rowile Column.
Widget myWidget() {
return Row(
children: <Widget>[
Expanded(
flex: 7,
child: Container(
color: Colors.green,
),
),
Expanded(
flex: 3,
child: Container(
color: Colors.yellow,
),
),
],
);
}
Ek kod
İşte main.dartreferans için kod.
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(),
),
);
}
}
Widget myWidget() {
return ...
}