我的視窗小組件:
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
標題。文本(
globals.strings["add_event_title"/span>]。
style: TextStyle(
字體大小。18,
color: AppTheme.darkText,
fontWeight: FontWeight.w400,
),
),
),
body: 列(
兒童。[
擴展的(
孩子。Align(
對齊。FractionalOffset.topLeft,
子女。Padding(
padding: const EdgeInsets.all(8.0)。
孩子。AddEventWidget.withData(
categories: widget.categories,
geojson: widget.geojson,
address: widget.address,
),
),
),
),
擴展的(
孩子。對齊(
對齊。FractionalOffset.bottomCenter,
子女。行(
兒童。[
Padding(
padding: const EdgeInsets.all(8.0)。
孩子。SizedBox(
width: MediaQuery.of(context).size.width / 2 - 16,
孩子。RaisedButton(
形狀。RoundedRectangleBorder(borderRadius: borderRadius.round(24.0))。
onPressed: () => {},
padding: EdgeInsets.all(12.0)。
color: AppTheme.buttonConfirm,
孩子。文本(
globals.strings["add_event_button_confirm"] 。
風格。TextStyle(color: Colors.white),
),
),
),
),
Spacer(),
Padding()
padding: const EdgeInsets.all(8.0)。
孩子。SizedBox(
width: MediaQuery.of(context).size.width / 2 - 16,
孩子。RaisedButton(
形狀。RoundedRectangleBorder(borderRadius: borderRadius.round(24.0))。
onPressed: () => Navigator.of(context).pop()。
padding: EdgeInsets.all(12.0)。
color: AppTheme.buttonCancel,
孩子。文本(
globals.strings["add_event_button_cancel"/span>]。
風格。TextStyle(color: Colors.white),
),
),
),
)
],
),
),
)
],
),
);
}
AddEventWidget實際上是一個ListBox,如果沒有空間顯示所有的控制元件,就可以獲得滾動的概念。為了測驗,它目前充滿了文本部件:
Widget build(BuildContext context) {
return ListView(
children: [
Text("aaaaaaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaa")。
Text("aaaaaaaaaaaaaaaa")。
],
);
}
結果,我確實得到了可滾動的ListView,但我希望它適合剩余的空間(底部按鈕不應該是可滾動的,它們需要始終顯示在底部)。目前的結果是:
有什么想法嗎?
有什么辦法可以得到我需要的效果嗎?為什么我的ListView不能擴展到適合剩余空間而不與底部按鈕重疊?
uj5u.com熱心網友回復:
這是由flutter正確呈現的,問題出在你這一端。
你在一個Column內使用了兩個擴展的widget,由于螢屏空間被分成了兩個相等的部分。
這導致了第一個展開的widget擁有可用列的一半大小,因此ListView達到了最大的擴展,直到螢屏的中間。
為了解決這個問題并使ListView占據所有的可用空間,你可以從第二個子節點即Row中移除已擴展的部件。然后在ListView屬性shrinkWrap中設定為true。
代碼片段在這里
@override
Widget build(BuildContext context){
return Scaffold(
appBar: AppBar(
標題。文本(
"add_event_title"。
風格。TextStyle(
字體大小。18,
color: Colors.blue,
fontWeight: FontWeight.w400,
),
),
),
body: 列(
crossAxisAlignment: CrossAxisAlignment.center,
兒童。[
展開(
child: Align(
對齊。FractionalOffset.topLeft,
子女。Padding(
padding: const EdgeInsets.all(8.0)。
child:ListView.builder(
itemBuilder。(BuildContext context,int index){
return Text("aaaaaaaaaaaaaaaa")。
},
itemCount。100。
shrinkWrap: true。
),
),
),
),
行(
子女。[
Padding(
padding: const EdgeInsets.all(8.0)。
孩子。SizedBox(
width: MediaQuery.of(context).size.width / 2 - 16,
孩子。RaisedButton(
形狀。RoundedRectangleBorder(borderRadius: borderRadius.round(24.0))。
onPressed: () => {},
padding: EdgeInsets.all(12.0)。
color: Colors.green,
孩子。文本(
"確認"。
風格。TextStyle(color: Colors.white),
),
),
),
),
Spacer(),
Padding()
padding: const EdgeInsets.all(8.0)。
孩子。SizedBox(
width: MediaQuery.of(context).size.width / 2 - 16,
孩子。RaisedButton(
形狀。RoundedRectangleBorder(borderRadius: borderRadius.round(24.0))。
onPressed: () => Navigator.of(context).pop()。
padding: EdgeInsets.all(12.0)。
color: Colors.black45,
孩子。Text("取消",
風格。TextStyle(color: Colors.white)。
),
),
),
)
],
)
],
),
);
}
uj5u.com熱心網友回復:
只需從該列的第二個子項中移除Expanded,像這樣:
Align(
對齊。FractionalOffset.bottomCenter,
孩子。行(
children: [
Padding(
padding: const EdgeInsets.all(8.0)。
孩子。SizedBox(
width: MediaQuery.of(context).size.width / 2 - 16,
孩子。RaisedButton(
形狀。RoundedRectangleBorder(
borderRadius: borderRadius.round(24.0))。
onPressed: () => {},
padding: EdgeInsets.all(12.0)。
孩子。Text(
'globals.strings["add_event_button_confirm"]'/span>,
風格。TextStyle(color: Colors.white),
),
),
),
),
Spacer(),
Padding()
padding: const EdgeInsets.all(8.0)。
孩子。SizedBox(
width: MediaQuery.of(context).size.width / 2 - 16,
孩子。RaisedButton(
形狀。RoundedRectangleBorder(
borderRadius: borderRadius.round(24.0))。
onPressed: () => Navigator.of(context).pop()。
padding: EdgeInsets.all(12.0)。
孩子。Text(
'globals.strings["add_event_button_cancel"]'/span>。
風格。TextStyle(color: Colors.white),
),
),
),
)
],
),
),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/315510.html
標籤:

