網站首頁 編程語言 正文
本文實例為大家分享了flutter底部彈出效果的具體代碼,供大家參考,具體內容如下
項目中遇到多種條件篩選的情況,我使用了flutter官方的BottomSheet組件來解決了我的問題。先看一下效果圖:
ModalBottomSheet
這個ModalBottomSheet就是類似一個Dialog,有一個半透明的背景層,然后上面顯示你自定義的內容。 用法非常簡單,Flutter提供了一個showModalBottomSheet的方法彈出一個BottomSheet。
實現代碼:
class AddExpense extends StatefulWidget { ? @override ? StatecreateState() => _AddExpensePage(); } class _AddExpensePage extends State { ? List typeList = List (); ? Search _search; ? bool _typeCheck = false; ? @override ? void initState() { ? ? // TODO: implement initState ? ? super.initState(); ? ? _loadType(); ? } ? @override ? Widget build(BuildContext context) { ? ? // TODO: implement build ? ? return ?Column( ? ? ? children: [ ? ? ? ? Card( ? ? ? ? ? child: Row( ? ? ? ? ? ? children: [ ? ? ? ? ? ? ? SizedBox( ? ? ? ? ? ? ? ? width: 16.0, ? ? ? ? ? ? ? ), ? ? ? ? ? ? ? Text('報銷類型:', style: TextStyle(fontSize: 16)), ? ? ? ? ? ? ? Expanded( ? ? ? ? ? ? ? ? child: ListTile( ? ? ? ? ? ? ? ? ? title: Text( ? ? ? ? ? ? ? ? ? ? _search.code ?? "報銷類型", ? ? ? ? ? ? ? ? ? ), ? ? ? ? ? ? ? ? ? trailing: _typeCheck ? ? ? ? ? ? ? ? ? ? ? ? Icon(Icons.keyboard_arrow_up) ? ? ? ? ? ? ? ? ? ? ? : Icon(Icons.keyboard_arrow_down), ? ? ? ? ? ? ? ? ? onTap: () { ? ? ? ? ? ? ? ? ? ? setState(() { ? ? ? ? ? ? ? ? ? ? ? _typeCheck = !_typeCheck; ? ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? ? ? ? ? showModalBottomSheet( ? ? ? ? ? ? ? ? ? ? ? context: context, ? ? ? ? ? ? ? ? ? ? ? builder: (BuildContext context) { ? ? ? ? ? ? ? ? ? ? ? ? return ListView.separated( ? ? ? ? ? ? ? ? ? ? ? ? ? itemCount: typeList.length, ? ? ? ? ? ? ? ? ? ? ? ? ? separatorBuilder: (context, index) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? return Divider(); ? ? ? ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? ? ? ? itemBuilder: (context, index) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? return ListTile( ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title: Text(typeList[index].code), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? trailing: Offstage( ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? offstage: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? typeList[index].check ? false : true, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? child: Icon(Icons.check), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? onTap: () { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int i = 0; i < typeList.length; i++) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? i != index ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? typeList[i].check = false ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? : typeList[i].check = true; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? _search = typeList[index]; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Navigator.pop(context); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ); ? ? ? ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? ? ? ); ? ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? ).then((val) { ? ? ? ? ? ? ? ? ? ? ? setState(() { ? ? ? ? ? ? ? ? ? ? ? ? _typeCheck = !_typeCheck; ? ? ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ), ? ? ? ? ? ? ? ) ? ? ? ? ? ? ], ? ? ? ? ? ), ? ? ? ? ), ? ? ? ], ? ? ); ? ? ? } ? void _loadType() { ? ? String jsonData = ? ? ? ? '[{"code":"差旅費報銷單","check":true},{"code":"一般費用報銷單","check":false},{"code":"因公臨時出國(境)支出表","check":false},{"code":"藥費報銷單","check":false},{"code":"合同付款審批表","check":false},{"code":"工資系統專用報銷表","check":false}]'; ? ? List list = json.decode(jsonData); ? ? list.forEach((element) { ? ? ? Search search = Search.fromJson(element); ? ? ? if (search.check) { ? ? ? ? setState(() { ? ? ? ? ? _search = search; ? ? ? ? }); ? ? ? } ? ? ? typeList.add(search); ? ? }); ? } }
原文鏈接:https://blog.csdn.net/tiger_gy/article/details/107519066
相關推薦
- 2023-04-26 C語言實現數組元素排序方法詳解_C 語言
- 2023-02-12 go語言?http模型reactor示例詳解_Golang
- 2022-10-15 Go?Excelize?API源碼閱讀GetPageLayout及SetPageMargins_Go
- 2022-10-01 Iptables防火墻limit模塊擴展匹配規則詳解_安全相關
- 2022-04-01 docker 命令查看registry倉庫鏡像
- 2022-04-28 Python可視化學習之matplotlib內置單顏色_python
- 2022-04-25 Python中的圖形繪制簡單動畫實操_python
- 2022-06-28 ES6基礎語法之字符串擴展_基礎知識
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支