Flutter是一种跨平台的移动应用开发框架,使用Dart语言编写。ListView.builder是Flutter中的一个构建列表视图的方法,用于构建具有大量项目的列表。ExpansionTile是一个可展开/折叠的小部件,允许用户通过点击标题来展开或折叠内容。
关于带有ListView.builder的Flutter ExpansionTile出现奇怪的垂直滚动问题,可能是由于以下原因之一:
针对这个问题,以下是一种可能的解决方案:
import 'package:flutter/material.dart';
class MyWidget extends StatelessWidget {
final List<String> items = List.generate(100, (index) => "Item $index");
List<bool> expandedList = List.generate(100, (index) => false);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ExpansionTile Example'),
),
body: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
return ListTile(
title: ExpansionTile(
title: Text(items[index]),
children: <Widget>[
Container(
height: 200,
child: ListView.builder(
itemCount: 10,
itemBuilder: (context, index) {
return ListTile(
title: Text('Nested Item $index'),
);
},
),
),
],
onExpansionChanged: (value) {
expandedList[index] = value;
},
initiallyExpanded: expandedList[index],
),
);
},
),
);
}
}
void main() {
runApp(MaterialApp(
home: MyWidget(),
));
}
在这个示例中,我们将ExpansionTile放置在ListView.builder中的ListTile中,并使用expandedList列表来跟踪每个ExpansionTile的展开状态。同时,我们为了避免嵌套滚动问题,将内部ListView.builder包裹在一个固定高度的容器中。
以上是针对带有ListView.builder的Flutter ExpansionTile奇怪垂直滚动问题的解决方案。希望能帮到你。如果有其他问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云