首页 > 解决方案 > 在flutter中关闭endDrawer后如何运行功能

问题描述

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

标签: flutterdynamicwidgetdrawerscaffold

解决方案


不幸的是,你不能只用 a 包裹你的结束抽屉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,
            ),
          ),
        ],
      ),
    );
  }
}

推荐阅读