我在 flutter 应用程序中 StatefulWidget 类的构建方法中返回以下小部件:
return Stack(
children: [
Observer(
builder: (context) {
return SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
children: [
_dashboardStore.showFirstPageLoading == false
? _buildDashboardTableDataWidgets()
: Container(),
_dashboardStore.showFirstPageLoading == false
? _buildFactAndFigureWidget()
: Container(),
//_showSearchAndSummaryList(),
],
),
);
},
),
_showRetryButton(),
_showLoader()
],
);
你可以注意到我在flutter中使用了Observer并使用了mobx状态管理。这里,_dashboardStore是与mixin Store一起初始化的类,如下所示:
_dashboardStore = Provider.of<DashboardStore>(context, listen: false);
在上面的小部件中,我使用以下可观察字段,它们在 DashboardStore 中为:
@observable
DashboardTableDataRes? dashboardTableDataRes;
@observable
FactAndFigureDataRes? dashboardFactAndFigureRes;
但是我在运行应用程序时遇到以下异常:
构建观察者时抛出以下_Exception(脏): 异常:构建Observer时发生错误,但被捕获 因为disableErrorBoundaries==true
导致错误的相关小部件是:Observer 观察者:文件:///home/growexx/StudioProjects/flutter-mobile-app/lib/ui/dashboard/dashboard_view.dart:92:9
下面是我在 pubspec.yaml 文件中使用的依赖项:
mobx: ^2.0.1
flutter_mobx: ^2.0.0
provider: ^6.0.0
以下是开发依赖项:
mobx_codegen: ^2.0.1+3
build_runner: ^2.0.3
我在这里做错了什么或者可能是什么问题?
您在没有首先确保null安全的情况下直接返回singleChildScrollView可能是问题所在。
所以,您可以尝试以下方法来避免这个错误
Observer(
builder: (context) {
// check for null safety first
if (_dashboardStore.dashboardTableDataRes == null &&
_dashboardStore.dashboardFactAndFigureRes == null) {
return Container(); // Return loading or any Other error widget you want
}
// Continue to build your UI without null data
// your widget
return SingleChildScrollView(
);
},
),
而且我也假设
_dashboardStore.showFirstPageLoading == false
在您的商店(控制器)中,您使用默认值进行初始化。
如果没有,那么也尝试对
_dashboardStore.showFirstPageLoading == false
进行空安全,并返回加载或代码中您想要的内容。
希望这对您有帮助。