Как запустить функцию, когда endDrawer закрыт во флаттере - PullRequest
0 голосов
/ 15 января 2020

У меня есть страница со списком товаров, с которой я открыл endDrawer, который содержит элемент корзины. если я удаляю товары из корзины, он не обновляет страницу со списком товаров автоматически. Как использовать функцию .then в endDrawer во флаттере?

1 Ответ

1 голос
/ 15 января 2020

К сожалению, вы не можете просто обернуть свой конечный ящик с 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,
            ),
          ),
        ],
      ),
    );
  }
}
...