flutter - 当小部件与 AnimatedSwitcher 一起使用时,Flutter Provider 被关闭
问题描述
我有一个 Flutter 应用程序,我在其中使用 AnimatedSwitcher 在用户点击同一父小部件时为不同的小部件设置动画。我正在为正在动画的子小部件使用几个提供程序,这些提供程序会给出错误,例如:产品在被处置后被使用
我对 Provider 不是很有经验,并且在 Navigator 的同一个应用程序中使用过它,并且从未遇到过问题。
我正在使用 setState 设置子小部件,如下所示:
_animateToChild() {
setState(() {
childWidget = MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => ModelPath(storePath: AppConstants.carousel)),
ChangeNotifierProvider(create: (_) => Product())
],
child: ChildFragment(
productRoot: 'My Product',
));
});
}
在 Child Fragment 小部件中,我按如下方式访问 ModelPath 并导航到不同的页面:
_openCollection(BuildContext context) {
Navigator.of(context).push(MaterialPageRoute(
builder: (_) => MultiProvider(providers: [
ChangeNotifierProvider.value(value: Provider.of<ModelPath>(context)),
ChangeNotifierProvider(create: (_) => Product()),
ChangeNotifierProvider(create: (_) => ProductSelector())
], child: CollectionFragment(title: product.title)),
));
}
_openCollection() 在点击 ChildFragment 上的按钮之一时被调用。
有人可以在这里帮助我了解如何将 Providers 与 AnimatedSwitcher 一起使用吗?
我的 AnimatedSwitcher 工作后:
AnimatedSwitcher(
duration: Duration(milliseconds: 800),
transitionBuilder: (Widget child, Animation animation) {
final inAnimation =
Tween<Offset>(begin: Offset(1.0, 0.0), end: Offset(0.0, 0.0))
.animate(animation);
final outAnimation =
Tween<Offset>(begin: Offset(-1.0, 0.0), end: Offset(0.0, 0.0))
.animate(animation);
return SlideTransition(position: inAnimation, child: child);
} ...)
解决方案
推荐阅读
- rust - 是否可以使用 Tokio 和 Juniper 在 GraphQL 对象字段中执行任何类型的并行计算?
- laravel - 在 foreach 循环中单击表上的单个按钮不起作用
- javascript - 如何附加
- 成功后的名单?Laravel 5.6 Javascript/JQuery
- c# - 如何更改十进制格式
- javascript - 将位于 Heroku 的 Node.js 应用程序日志发送到文件
- java - 未找到 Wildfly 15 外部 Artemis ActiveMQ 目的地
- java - 如何调用 scanDouble() 方法?
- c# - 操作子对象的材质元素
- azure - TCP 客户端无法接收来自服务器的响应
- mysql - mysql准备好的语句是否有编号的占位符