在flutter中关闭endDrawer后如何运行功能

Posted

技术标签:

【中文标题】在flutter中关闭endDrawer后如何运行功能【英文标题】:How to run function when after endDrawer is closed in flutter 【发布时间】:2020-05-01 22:00:21 【问题描述】:

我有产品列表页面,我从中打开了包含购物车项目的 endDrawer。如果我删除购物车项目,它不会自动更新产品列表页面。如何在flutter中使用endDrawer中的.then函数?

【问题讨论】:

【参考方案1】:

不幸的是,你不能只用DrawerController 包裹你的末端抽屉并在它关闭或打开时获得回调,因为 Scaffold 确实为它自己制作了一个抽屉控制器并封装了它,所以你不能修改它。

我能想到的唯一其他方法是将抽屉控制器放在主脚手架之外,或者如果您熟悉这些方法,则使用 Overlay 显示它。

class HomePage extends StatefulWidget 
  @override
  _HomePageState createState() => _HomePageState();


class _HomePageState extends State<HomePage> 
  @override
  Widget build(BuildContext context) 
    return Scaffold(
      body: Stack(
        children: <Widget>[
          Positioned.fill(
            child: Scaffold(
              appBar: PreferredSize(
                preferredSize: Size.fromHeight(kToolbarHeight),
                child: UserAppBar(),
              ),
              body: PostsPage(),
            ),
          ),
          Positioned.fill(
            child: DrawerController(
              child: Drawer(
                child: Column(),
              ),
              drawerCallback: (open)
                print(open);
              ,
              alignment: DrawerAlignment.end,
            ),
          ),
        ],
      ),
    );
  

【讨论】:

看起来脚手架会自动生成一个DrawerController,而您不能将它们放在一起。 您可能还想研究状态管理。小部件和列表的更新首先应该不是问题。您可以使用流和 Bloc 或任何其他方式来做到这一点。我个人非常喜欢使用 ValueNotifiers 和 AnimatedBuilders。

以上是关于在flutter中关闭endDrawer后如何运行功能的主要内容,如果未能解决你的问题,请参考以下文章

Flutter中关闭相机后的白屏/黑屏

如何在 Flutter 的 appbar 之外添加 endDrawer?

防止对话框在 Flutter 中关闭外部触摸

在 Flutter 中关闭 AlertDialog

如果包含 endDrawer,Flutter 2.0 appbar 后退按钮会消失

在showDialog中Flutter Navigator.of(context).pop(),在ios中关闭整个应用程序