具有AnimatedSwitcher Flutter的提供程序

时间:2020-10-31 21:53:31

标签: flutter dart

我有一个使用子级动画切换器的父级消费者,我希望当提供者的值发生更改时,会出现一些淡入淡出的动画,但是没有动画发生!这里出了什么问题?这是我的代码:

@override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: _buildContent(context),
    );
  }
 Widget _buildContent(BuildContext context) {
    return Consumer<HomeProvider>(
        builder: (context, homeProvider, child) {
        return AnimatedSwitcher(duration: Duration(milliseconds: 300),
          child: _getAnimatedWidget(homeProvider, context),
        );
        },
      );
  }

这是_getAnimatedWidget方法:

Widget _getAnimatedWidget(HomeProvider homeProvider, BuildContext context){
    switch (homeProvider.homeResponse.status) {
      case Status.COMPLETED:
        return _buildHomeScreen(context, homeProvider);
      case Status.ERROR:
        return _parseError(context, homeProvider);
      case Status.LOADING:
        return _parseLoading(context);
      default:
        return Container();
    }
  }

请帮帮我!我仍然不知道如何正确地用动画更新UI。如果需要,我可以提供其他代码。

1 个答案:

答案 0 :(得分:0)

您需要提供docs 指定的AnimatedSwitcher潜在子代的密钥。如果动画有时起作用,则可能是因为返回的确切窗口小部件类型不同。如果窗口小部件类型相同,则flutter需要按键来检测子窗口小部件中的更改。