Bu, bahsedilen çözümlerden birkaçının uygulanmasını gösteren tamamlayıcı bir cevaptır.
KesirliSizeKutu
Tek bir widget'ınız varsa, FractionallySizedBox
doldurulacak 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ş
Expanded
Eklendi 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 Row
ile 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.dart
referans 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 ...
}