【发布时间】:2021-11-14 20:57:10
【问题描述】:
我确定我遗漏了一些非常明显的东西,但是我无法理解为什么会发生这种情况。
我调用了一个名为 readJSON 的方法,它将 JSON 文件读入对象。我使用长度来呈现页面,每个页面都有一个基于主对象索引的复选框列表。
我已使用:https://github.com/afzalali15/onboarding_demo 在我的应用程序中构建此入职任务。
*请注意,当我实现这个时,我看到热重载工作得非常好。当我关闭 VSCode 并稍后再次打开时,readJSON 方法永远不会运行。
class _OnboardingPageState extends State<OnboardingPage> {
List<OnboardingTodo> onboardingTasks = [];
final _controller = OnboardingController();
String response = '';
bool value = false;
Future<void> readJson() async {
response = await rootBundle.loadString('assets/cfg/onboarding_tasks.json');
final onboardingTodo = onboardingTodoFromJson(response);
onboardingTasks.addAll(onboardingTodo.values);
print("onboarding length - " + onboardingTasks.length.toString());
}
@override
void initState() {
readJson();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Stack(
children: [
PageView.builder(
controller: _controller.pageController,
onPageChanged: _controller.selectedPageIndex,
itemCount: onboardingTasks.length,
itemBuilder: (context, index) {
return Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
_controller.onboardingPages[index].imageAsset,
height: 100,
width: 100,
),
SizedBox(height: 32),
Text(
_controller.onboardingPages[index].title,
style: TextStyle(
fontSize: 24, fontWeight: FontWeight.w500),
),
SizedBox(height: 32),
Expanded(
child: Container(
child: ListView.builder(
padding: const EdgeInsets.all(8),
itemCount: onboardingTasks[index].tasks.length,
itemBuilder:
(BuildContext context, int chkBoxindex) {
return CheckboxListTile(
controlAffinity:
ListTileControlAffinity.leading,
value: value,
title: Text(
'${onboardingTasks[index].tasks[chkBoxindex].title}'),
onChanged: (bool newVal) {
setState(() {
value = newVal;
});
},
);
},
),
),
),
],
),
);
},
),
// The dots showing the index of the pages
...
// The next/end button
...
],
),
),
);
}
}
感谢任何帮助或建议。谢谢
【问题讨论】:
-
我检查了以下内容:stackoverflow.com/questions/60082129/… 但我无法得到答案
-
如果
readJson什么都不返回,你如何得到null,请显示错误 -
对不起,我把标题改了一点。所以该方法不执行。所以我使用的任何东西都是空的。
-
你应该在函数调用中使用“等待”吗?等待 readJson();
-
返回错误