首页 > 解决方案 > 由于检查员的 Widget 模式,Provider 中的最后一个变量被设置了两次

问题描述

鉴于以下 MWE:

class AnimationProvider with ChangeNotifier {
  late final AnimationController controller;
}

class Animations extends StatefulWidget {
// ...
}

class _AnimationsState extends State<Animations> with TickerProviderStateMixin {
  // ...
  
  @override
  initState() {
    context.read<AnimationProvider>.read().controller = AnimationController(..., vsync: this);
  }

  // ...
}

void main() {
  return Provider(
    create: (_) => AnimationProvider(),
    child: MaterialApp(
      home: Animations(child: Scaffold(...)),
    ),
  );
}

我想在我的 Flutter 应用程序上切换 Widget Inspector 模式,但我面临着一个大问题。

检查员正在重新实例化MaterialApp小部件树,从而调用我的类的initState函数。Animations


此问题记录以下错误:

LateInitializationError: Field 'controller' has already been initialized.

我试过??=了,但由于值不能为空,我会得到一个异常。

到目前为止我的想法已经用完了,在此先感谢您的帮助!

标签: flutterdartflutter-provider

解决方案


推荐阅读