flutter - 按下按钮时 Flutter DraggableScrollableSheet 未显示
问题描述
我想DraggableScrollableSheet
在我的应用程序上使用小部件,当我像下面的代码一样使用它时,它可以毫无问题地显示:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('DraggableScrollableSheet'),
),
body: SizedBox.expand(
child: DraggableScrollableSheet(
builder: (BuildContext context, ScrollController scrollController) {
return Container(
color: Colors.blue[100],
child: ListView.builder(
controller: scrollController,
itemCount: 25,
itemBuilder: (BuildContext context, int index) {
return ListTile(title: Text('Item $index'));
},
),
);
},
),
),
);
}
}
但是当我想通过按下例如floatingActionButton
不显示的方式来显示时
floatingActionButton: GestureDetector(
child: FloatingActionButton(
child: Icon(
Icons.add,
size: 35.0,
),
elevation: 5,
backgroundColor: Colors.deepOrange,
foregroundColor: Colors.white,
onPressed: (){
SizedBox.expand(child: DraggableScrollableSheet(
builder: (BuildContext context, ScrollController scrollController) {
return Container(
color: Colors.blue[100],
child: ListView.builder(
controller: scrollController,
itemCount: 25,
itemBuilder: (BuildContext context, int index) {
return ListTile(title: Text('Item $index'));
},
),
);
},
));
},
),
),
解决方案
如果你想使用DraggableScrollableSheet
inside showModalBottomSheet
,你可以简单地调用这个函数。
void _showSheet() {
showModalBottomSheet(
context: context,
isScrollControlled: true, // set this to true
builder: (_) {
return DraggableScrollableSheet(
expand: false,
builder: (_, controller) {
return Container(
color: Colors.blue[500],
child: ListView.builder(
controller: controller, // set this too
itemBuilder: (_, i) => ListTile(title: Text('Item $i')),
),
);
},
);
},
);
}
推荐阅读
- qt - Qt QGraphicsView不播放任何视频
- python - 将内部 0 和第一个索引附加到第二个索引二维列表列表中的所有元素 - python
- rspec - 使用 FactoryBot create_list 并在每个实例中重新创建对象
- css - 制作符合 amp-html 的固定标头
- r - 仅在 geom_bar 中绘制变量的最常见级别
- python - 如何处理 Keras 层的重复输入?
- ios - 堆栈视图内的布局约束(以编程方式快速)
- asp.net-core - 无法从 OnGet() 保存变量
- jquery - 如何使用 Sharepoint Rest API 在列表列上实现 LIKE(filter)?
- macos - 将 App 预览上传到 App Store Connect:预览时间过长