flutter - Flutter StatefulWidget 没有小部件属性
问题描述
我有一个为 Android 设置后端的 StatefulWidget:
class ToeKickSettings extends StatefulWidget {
ToeKickSettings({
Key key,
this.backend
}) : super(key: key);
final AndroidBackend backend;
@override
_ToeKickSettingsState createState() => _ToeKickSettingsState();
}
class _ToeKickSettingsState extends State<ToeKickSettings> {
double default_bottom_spacing = 5;
List<Widget> listChildren = [];
_ToeKickSettingsState() {
generateListsFromSoundPacks().then((val) => setState(() {
listChildren = val;
}));
}
Future<List<Widget>> generateListsFromSoundPacks() async {
List<Widget> list = new List<Widget>();
List<String> soundPacks = await widget.backend.common.listSoundPacks();
//...
}
}
StatefulWidget
我通过做访问状态部分的后端await widget.backend.common.listSoundPacks();
我收到此错误:
E/flutter (23645): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The getter 'backend' was called on null.
E/flutter (23645): Receiver: null
E/flutter (23645): Tried calling: backend
E/flutter (23645): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
E/flutter (23645): #1 _ToeKickSettingsState.generateListsFromSoundPacks (package:flutter_app/toe_kick.dart:131:44)
这表明调用时没有widget
属性。generateListsFromSoundPacks
我怀疑这与我_ToeKickSettingsState()
从_ToeKickSettingsState createState() => _ToeKickSettingsState();
. 该wodget
属性可能尚未设置。
我能做些什么?
解决方案
不要widget
在State class
的构造函数中使用,将构造函数中的代码移动到initState
.
@override
void initState() {
super.initState();
generateListsFromSoundPacks().then((val) => setState(() {
listChildren = val;
}));
}
推荐阅读
- .net - Microsoft Visual Studio 2005 可用性
- sql - 使用内连接删除需要 40 多秒才能删除 500 行
- javascript - 从 node-fetch 返回一个值
- html - 上传,编辑和替换html和angular 4中的现有文件图像
- dart - Dart - 如何使用不同的主体进行多个 http.post 请求
- sas - SAS:代码执行的条件结束
- php - 如何覆盖 Laravel 中的方法
- dart - 飞镖新手进度调试错误在这里
- python - ModuleNotFoundError:没有名为“flask”的模块
- kubernetes - Ingress 端点在 GKE 上显示带有响应 200 的空白页面