共计 2377 个字符,预计需要花费 6 分钟才能阅读完成。
原文
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…