提供AnimatedSwitcher Flutter的提供商

3

我有一个带有子动画切换器的父级消费者,我期望当提供者的值发生变化时会有一些交叉淡入淡出的动画效果,但是没有任何动画效果发生!这里出了什么问题?以下是我的代码:

@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界面。如果需要,我可以提供额外的代码。


你在哪里使用_buildContent方法? - zpouip
我更新了我的问题!)我将其用于无状态小部件的构建方法内。 - Atamyrat Babayev
您需要按照文档中的说明,为AnimatedSwitcher的潜在子元素提供键。请分享_buildHomeScreen_parseError_parseLoading方法以获得更具体的解决方案。 - Christopher Moore
谢谢您的回复!我将这些方法移动到了单独的小部件中,然后为它们附加了键,这解决了我的问题)) 但我意识到有时候它可以在没有任何键的情况下工作)) - Atamyrat Babayev
这里发生了一些神奇的事情))) - Atamyrat Babayev
你可以把你的评论移到答案区,我会将其标记为已接受! - Atamyrat Babayev
1个回答

4
您需要为潜在的AnimatedSwitcher子级提供键值,正如文档所述。如果动画有时不起作用,则很可能是因为返回的确切小部件类型不同。如果小部件类型相同,则需要使用键来检测子小部件中的更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接