Flutter 如何在多个窗口小部件之间进行淡入淡出
我使用的是一个底部导航栏,有5个项目,对于每个小部件,我应该从服务器加载一些数据,我想在项目之间进行淡入淡出,但我不知道如何,因为我认为项目不是一个新的页面,我实现了路由淡入淡出过渡。 此外,我还为每个项目定义了一个futureBuilder来加载其数据 在futureBuilder的ConnectionState.waiting中做某事是可能的,但它没有渐变过渡,过渡正在跳跃 我还用连接插件检查互联网连接 我遇到麻烦处理他们,因为我几乎是新手飞 我很想知道处理这件事最有效的方法是什么。Flutter 如何在多个窗口小部件之间进行淡入淡出,flutter,dart,Flutter,Dart,我使用的是一个底部导航栏,有5个项目,对于每个小部件,我应该从服务器加载一些数据,我想在项目之间进行淡入淡出,但我不知道如何,因为我认为项目不是一个新的页面,我实现了路由淡入淡出过渡。 此外,我还为每个项目定义了一个futureBuilder来加载其数据 在futureBuilder的ConnectionState.waiting中做某事是可能的,但它没有渐变过渡,过渡正在跳跃 我还用连接插件检查互联网连接 我遇到麻烦处理他们,因为我几乎是新手飞 我很想知道处理这件事最有效的方法是什么。 谢谢也
谢谢也许你正在寻找的是
动画切换器
,它为它的子对象添加了一个隐式动画,这样每当你调用setState()
来更改它的子对象时,它就会自动在它们之间启动淡入/淡出动画。从本周系列小部件中查看此视频:
另一种可能性是AnimatedOpacity
,它可以通过更改子对象的不透明度来实现类似的行为。以下是有关AnimatedOpacity
widget的文档参考:
我知道这是一个非常古老的问题,但我用类似的方法解决了这个问题:
Widget dynWidget = CircularProgressIndicator();
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: future,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
dynWidget = Text('Content loaded!');
}
return AnimatedSwitcher(
duration: Duration(seconds: 1), child: dynWidget);
});
}
谢谢,这个小部件解决了转换问题,另外,您是否有任何想法将UI从ConnectionState.waiting(包含一个circleProgressIndecator)更改为ConnectionState.done?或者是否有任何类似futureBuilder的小部件具有相同的加载数据行为,并根据加载数据的状态显示UI,但具有漂亮的动画?因为我想显示两次淡入淡出过渡:1-更改widget 2-加载数据我怀疑您正在寻找的是
StreamBuilder
。您需要更改您的连接状态,这些状态可能是围绕未来构建的
,然后围绕流重新构建它们,这样您就可以监听网络数据的更改StreamBuilder
将允许您对流中的更改做出反应,并基于这些更改更新UI。下面是一个关于StreamBuilder
的示例,您可能会发现它很有用。但是,我建议你将这个问题标记为我的答案解决了,然后打开另一个问题,这样人们会很容易找到这个主题。