我试图读取存储数据的文件,并在屏幕上显示它。当我第一次加载我的应用程序时,我得到了如下所示的错误。热重新加载后,我的信息将显示,没有任何错误。您知道为什么会发生这种情况,以及如何确保数据在第一次加载时就已经加载了吗?
也许这跟打电话给州有关但我不知道。导致问题的是底部的代码:
子文档:文本(context.select((FileController控制器) => controller.text!)


import 'package:flutter/material.dart';
import 'package:habit_changer/file-handling/file_controller.dart';
import 'package:habit_changer/main/AddHabitDialog.dart';
import 'package:provider/provider.dart';
import '../utils/Constants.dart';
import 'MainBody.dart';
import 'nav_bar.dart';
void main() {
runApp(MultiProvider(
providers: [ChangeNotifierProvider(create: (_) => FileController())],
child: MaterialApp(home: MyApp())
));
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
context.read<FileController>().readText();
return Scaffold(
appBar: AppBar(
title: const Text('Habits'),
backgroundColor: Constants.appBarColor,
leading: GestureDetector(
onTap: () {
openNavBar();
},
child: Icon(
Icons.menu, // add custom icons also
),
),
actions: <Widget>[
Padding(
padding: EdgeInsets.only(right: 20.0),
child: GestureDetector(
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) =>
AddHabitDialog().buildPopupDialog(context),
);
},
child: Icon(Icons.add),
),
)
],
),
body: Container(
child: Text(context.select((FileController controller) => controller.text!)),
),
);
}
}以下是错误:
Null check operator used on a null value
The relevant error-causing widget was:
MyApp file:///C:/Projekte/Flutter%20Projects/habit_changer/lib/main/main.dart:13:30
When the exception was thrown, this was the stack:
#0 MyApp.build.<anonymous closure> (package:habit_changer/main/main.dart:52:82)
#1 SelectContext.select (package:provider/src/inherited_provider.dart:283:32)
#2 MyApp.build (package:habit_changer/main/main.dart:52:29)
#3 StatelessElement.build (package:flutter/src/widgets/framework.dart:4648:28)
#4 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4574:15)发布于 2022-04-02 14:38:26
当变量最初为null,但随后收到值时,就会发生这种情况。将运算符更改为空检查运算符:
controller.text ?? ''这将解决您正在接收的空异常。
https://stackoverflow.com/questions/71718266
复制相似问题