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

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

【问题讨论】:

    标签: flutter dynamic widget drawer scaffold


    【解决方案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。
    猜你喜欢
    • 2021-04-14
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2011-01-23
    • 2021-08-19
    • 2013-05-06
    相关资源
    最近更新 更多