原文
https://betterprogramming.pub...
代码
https://github.com/macro6461/...
参考
- https://stackoverflow.com/que...
- https://stackoverflow.com/que...
- https://stackoverflow.com/use...
注释
如果你是从我以前的帖子来的,你看到我启动了我的待办事项应用程序,解决了我状态更新时不能用 showModalBottomSheet 办法更新 NewToDo
的问题。
在 Stack Overflow 上问了一个问题之后,我终于能够把我的 NewToDo
小部件放到 showModalBottomSheet
中了。这样,NewToDo
小部件只有在我单击 FloatingActionButton
时才可见,而不是必须始终可见。
然而,在实现这个指标后不久,我留神到我的应用程序中还有一个问题。
当我抉择要编辑的 ToDo
我的项目时,我心愿可能重用我的 NewToDo
。我认为这是有意义的,因为它是同样的两个输出,能够用来扭转雷同的两个状态值,title
和 content
。
问题是什么?
除了在我的 FloatingActionButton
小部件(绿色圆圈)的 onPressed
办法之外,我无奈在任何中央执行 showModalBottomSheet
(绿色箭头)。
我须要可能触发 onPressed
办法,每当我点击编辑题目 ElevatedButton
小部件(红色圆圈标记) ,每个 ToDo
我的项目。
我思考了如何找到一种办法来模仿 onPressed
事件,以便执行 showmodbottomsheet
回调。
因为无奈模仿 onPressed
事件(and frustrated) ,我带着 Stack Overflow 去看看是否有其他人对如何实现我所寻找的指标有任何想法。
过了一会儿,我失去了答案。我松了一口气... ... 也谦卑起来。
如此简略... 如此纯净
我驳回了 eimmer’s 的倡议,没有把我的 showModalBottomSheet
放在 onPressed
办法中,而是把它分解成了它本人的函数 renderShowModal
。参见下文:
_renderShowModal(){ return showModalBottomSheet<void>( context: context, builder: (BuildContext context) { return ValueListenableBuilder( valueListenable: titleController, builder: (context, _content, child) { return NewToDo(titleController, contentController, _addTodo, _clear, _todo); }); }, );}
这样做之后,我就能够重写我的 onPressed
办法了。
onPressed: _renderShowModal,
当初咱们曾经把咱们的 showModalBottomSheet
放在独自的函数中,让咱们看看它是否工作:
太棒了!咱们当初须要做的就是在 editTodo
函数的开端调用雷同的函数,当你点击编辑 EelevatedButton
时,这个函数就会被调用。
void _editTodo(ToDo todoitem){ setState(() { _todo = todoitem; content = todoitem.content; title = todoitem.title; }); contentController.text = todoitem.content; titleController.text = todoitem.title; _renderShowModal();}
当初让咱们看看当咱们单击 ToDo
我的项目旁边的 edit
时它是否工作。
Viola! 维奥拉
咱们当初能够应用 NewToDo
来创立新的 ToDo
我的项目和编辑现有的 ToDo
我的项目。
通过将 showModalBottomSheet
包装在一个独自的函数中,咱们能够通过调用 renderShowModal
,让咱们的应用程序在任何时候都能够出现 NewToDo
invoking _renderShowModal
。
这个利用的所有代码都在 GitHub 上。
© 猫哥
- https://ducafecat.tech/
- https://github.com/ducafecat
- 微信群 ducafecat
- b 站 https://space.bilibili.com/40...
往期
开源
GetX Quick Start
https://github.com/ducafecat/...
新闻客户端
https://github.com/ducafecat/...
strapi 手册译文
https://getstrapi.cn
微信探讨群 ducafecat
系列汇合
译文
https://ducafecat.tech/catego...
开源我的项目
https://ducafecat.tech/catego...
Dart 编程语言根底
https://space.bilibili.com/40...
Flutter 零根底入门
https://space.bilibili.com/40...
Flutter 实战从零开始 新闻客户端
https://space.bilibili.com/40...
Flutter 组件开发
https://space.bilibili.com/40...
Flutter Bloc
https://space.bilibili.com/40...
Flutter Getx4
https://space.bilibili.com/40...
Docker Yapi
https://space.bilibili.com/40...