要在终端抽屉中添加多个ListTile而不会在颤动中滚动,可以使用ListView或ListView.builder来实现。
ListView是一个可滚动的列表,可以直接将多个ListTile放入其中。以下是一个示例代码:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyDrawer(),
);
}
}
class MyDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Drawer'),
),
drawer: Drawer(
child: ListView(
children: <Widget>[
ListTile(
title: Text('Item 1'),
onTap: () {
// 点击Item 1的操作
},
),
ListTile(
title: Text('Item 2'),
onTap: () {
// 点击Item 2的操作
},
),
ListTile(
title: Text('Item 3'),
onTap: () {
// 点击Item 3的操作
},
),
// 添加更多的ListTile
],
),
),
body: Center(
child: Text('Home Page'),
),
);
}
}
在上面的示例中,我们在Drawer的child中使用了ListView来包裹多个ListTile。这样就可以在抽屉中添加多个ListTile了。
如果需要动态生成大量的ListTile,可以使用ListView.builder。ListView.builder根据指定的itemBuilder来动态生成列表项,只会生成当前可见区域的列表项,可以提高性能。以下是一个使用ListView.builder的示例代码:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyDrawer(),
);
}
}
class MyDrawer extends StatelessWidget {
final List<String> items = ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5'];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Drawer'),
),
drawer: Drawer(
child: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(items[index]),
onTap: () {
// 点击列表项的操作
},
);
},
),
),
body: Center(
child: Text('Home Page'),
),
);
}
}
在上面的示例中,我们使用ListView.builder来动态生成列表项。通过设置itemCount为items的长度,itemBuilder根据index来生成对应位置的列表项。
这样就可以在终端抽屉中添加多个ListTile而不会在颤动中滚动了。
领取专属 10元无门槛券
手把手带您无忧上云