Hes*_*sal 5 listview dart flutter flutter-layout
我正在尝试构建一个非常简单的 ToDo 应用程序。它包括的TextField和Button在屏幕上,允许用户添加项目到顶部(形式)ListView是刚刚下了TextField。
我可以显示TextField和Button,也可以显示ListView,但是当我尝试同时显示两者时,屏幕是空的。
我错过了什么吗?我尝试将 ListView 显示到 Column 小部件中,但它看起来不起作用。
这是我没有表格的短代码:
import 'package:flutter/material.dart';
void main(){
runApp(MyApp());
}
class MyApp extends StatelessWidget{
@override
Widget build(BuildContext context){
return MaterialApp(
title: "Mon app",
home: Scaffold(
appBar: AppBar(
title: Text("My app")
),
body: Column(
children: <Widget>[
ListView(
children: <Widget>[
ListTile(
leading: Icon(Icons.map),
title: Text('Map'),
),
ListTile(
leading: Icon(Icons.photo_album),
title: Text('Album'),
),
ListTile(
leading: Icon(Icons.phone),
title: Text('Phone'),
),
],
)
])),
);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
Geo*_*rge 11
您应该Expanded在 ListView 周围使用小部件。它的作用是扩展其子级(在本例中为 ListView)以适应父级上的最大可用空间,不包括其他小部件占用的空间。
然后,当您想在底部添加输入时,您可以将普通小部件放在 内部Column,但在 外部ListView,因此列表将滚动并且 TextField 将始终保留在页面底部。
这是底部输入准备好的代码,但我建议您尝试仔细了解列、行和扩展小部件的情况。
import 'package:flutter/material.dart';
void main(){
runApp(MyApp());
}
class MyApp extends StatelessWidget{
@override
Widget build(BuildContext context){
return MaterialApp(
title: "Mon app",
home: Scaffold(
appBar: AppBar(
title: Text("My app")
),
body: Column(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
child: ListView(
children: <Widget>[
ListTile(
leading: Icon(Icons.map),
title: Text('Map'),
),
ListTile(
leading: Icon(Icons.photo_album),
title: Text('Album'),
),
ListTile(
leading: Icon(Icons.phone),
title: Text('Phone'),
),
],
),
),
Row(
children: <Widget>[
Expanded(
child: TextField(
decoration: InputDecoration(
hintText: "What to do?"
),
),
),
IconButton(
icon: Icon(Icons.send),
onPressed: (){
//do something
},
)
],
)
],
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5045 次 |
| 最近记录: |