因此,我尝试从 flutter 示例“Shrine”中调整登录页面,但是,当按原样使用登录页面时,我收到一个奇怪的空值错误。
我没有丝毫暗示我在这里做错了什么,以及我应该改变什么。是的,我尝试用调试器查看它,但我仍然没有任何线索。
错误似乎发生的确切位置(我认为)在这里:
static GalleryOptions of(BuildContext context) {
final scope =
context.dependOnInheritedWidgetOfExactType<_ModelBindingScope>()!;
return scope.modelBindingState.currentModel;
}
Run Code Online (Sandbox Code Playgroud)
对于那些感兴趣的人,代码位于我的 GitHub 上: https: //github.com/vguttmann/betterchips/tree/dev
那么,这是怎么回事?我如何解决它?最初为什么会发生这种情况?
从代码中可以清楚地看出,一些小部件正在尝试从其构建上下文中访问您尚未提供的 GalleryOptions。
查看原始图库应用程序 ( main.dart )的小部件树根,整个应用程序包装在具有一些预定义值的 ModelBinding 小部件中:
@override
Widget build(BuildContext context) {
return ModelBinding(
initialModel: GalleryOptions(
themeMode: ThemeMode.system,
textScaleFactor: systemTextScaleFactorOption,
customTextDirection: CustomTextDirection.localeBased,
locale: null,
timeDilation: timeDilation,
platform: defaultTargetPlatform,
isTestMode: isTestMode,
),
child: Builder(
builder: (context) {
Run Code Online (Sandbox Code Playgroud)
您复制的某些组件期望在其祖先行中的某个位置具有 ModelBinding 小部件。如果找不到,该函数将返回 null,并且由于它被标记为不可为 null(表达式后面有 bang 运算符),因此它会立即引发运行时错误。
如果您是 flutter 新手,我建议您只需复制他们所做的事情并使用 ModelBinding 小部件包装整个应用程序 (MaterialApp)。
| 归档时间: |
|
| 查看次数: |
381 次 |
| 最近记录: |