【发布时间】:2020-04-18 00:44:11
【问题描述】:
我仅在配置文件和发布(Web)构建中遇到此问题,但在调试构建中运行良好。
所以我有这门课,它可以访问didChangeDependencies()中的集团
class _CategoryPageState extends State<CategoryPage> {
BizBloc _bizBloc;
@override
void didChangeDependencies() {
super.didChangeDependencies();
_bizBloc = BizBlocProvider.of(context);
}
}
BlocProvider 几乎在应用程序的根附近,在main.dart 中定义如下:
Widget build(BuildContext context) {
return CityBlocProvider(
child: CategoryBlocProvider(
child: BizBlocProvider(
child: MaterialApp( /** actual code goes here */ )
)));
}
使用此设置,在调试模式下一切正常,但在配置文件构建时,我收到以下错误:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
js_primitives.dart:49 The following NullError was thrown building Builder:
js_primitives.dart:49 NoSuchMethodError: method not found: 'get$bloc' on null
js_primitives.dart:49
js_primitives.dart:49 Widget creation tracking is currently disabled. Enabling it enables improved error messages. It can
js_primitives.dart:49 be enabled by passing `--track-widget-creation` to `flutter run` or `flutter test`.
js_primitives.dart:49
js_primitives.dart:49 When the exception was thrown, this was the stack:
js_primitives.dart:49 TypeError: Cannot read property 'get$bloc' of undefined
js_primitives.dart:49 at Object.BizBlocProvider_of (https://bazon.in/app/main.dart.js:10277:126)
js_primitives.dart:49 at _CategoryPageState.didChangeDependencies$0 (https://bazon.in/app/main.dart.js:47315:25)
js_primitives.dart:49 at StatefulElement._firstBuild$0 (https://bazon.in/app/main.dart.js:85143:31)
js_primitives.dart:49 at StatefulElement.mount$2 (https://bazon.in/app/main.dart.js:85016:12)
js_primitives.dart:49 at SingleChildRenderObjectElement.inflateWidget$2 (https://bazon.in/app/main.dart.js:84733:16)
js_primitives.dart:49 at SingleChildRenderObjectElement.updateChild$3 (https://bazon.in/app/main.dart.js:84661:20)
js_primitives.dart:49 at SingleChildRenderObjectElement.mount$2 (https://bazon.in/app/main.dart.js:85506:39)
js_primitives.dart:49 at StatelessElement.inflateWidget$2 (https://bazon.in/app/main.dart.js:84733:16)
js_primitives.dart:49 at StatelessElement.updateChild$3 (https://bazon.in/app/main.dart.js:84661:20)
js_primitives.dart:49 at StatelessElement.performRebuild$0 (https://bazon.in/app/main.dart.js:85039:41)
更新 1:
现在我有一个父WidgetHomePage,其didChangeDependencies()如下:
@override
void didChangeDependencies() {
print('Home: Did Change Dependencies');
print(context);
print(CityBlocProvider.of(context));
_cityBloc = CityBlocProvider.of(context);
_categoryBloc = CategoryBlocProvider.of(context);
super.didChangeDependencies();
}
我在本地运行上述代码时的日志是:
js_primitives.dart:32 Home: Did Change Dependencies
js_primitives.dart:32 HomePage(dirty, state: _HomePageState#eb8ac(lifecycle state: initialized))
js_primitives.dart:32 Instance of 'CityBloc'
但是当我在profile build 中运行相同的代码时,日志是:
js_primitives.dart:49 Home: Did Change Dependencies
js_primitives.dart:49 HomePage
js_primitives.dart:49 ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
js_primitives.dart:49 The following NullError was thrown building _BodyBuilder:
js_primitives.dart:49 NoSuchMethodError: method not found: 'get$bloc' on null
HomePage 的实例看起来不同。配置文件构建托管@https://bazon.in/app/#/
这里可能出了什么问题?
【问题讨论】:
标签: flutter flutter-web