Flutter:第一次读取文件失败,但在热重载后工作

轻松

我尝试读取存储数据的文件并将其显示在我的屏幕上。当我第一次加载我的应用程序时,我收到如下所示的错误。热重新加载后,我的信息将显示没有任何错误。您知道为什么会发生这种情况以及如何确保我的数据在第一时间就已经加载了吗?

也许这与打电话给国家有关,但我不知道。这是导致问题的底部代码:

孩子:文本(context.select((FileController控制器)=>控制器。文本!)),

首次加载后出错 热重载后一切正常

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)
那个家伙

当您的变量最初为 null 但后来收到该值时,可能会发生这种情况。将运算符更改为空检查运算符:

controller.text ?? ''

这将解决您收到的空异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我的 PyCFunction 第一次工作,但在连续迭代后导致段错误

保存文件后,Ionic-native-file 无法第一次读取文件

Pytest 在第一次失败后停止运行

第一次后停止读取NFC标签

SpeechSynthesis 在 FireFox 中第一次发声后停止工作,但在 Chrome 中工作

mysql 在第一次后工作正常

会话已设置,但在第一次进入另一个页面后无法正常工作

在第一次重载后忽略打字稿重载

第一次后遍历文件更快

第一次迭代后,循环播放文件夹中的所有文件失败

JQuery 在第一次点击时不起作用,但在它之后工作

如何在 C# 中锁定文件而不使其在第一次被读取后不可写?

成功消息在第一次提交表单后消失,但在随后的提交之后消失

Autoconf循环但在第一次成功后停止?

第一次读取后UDP读取空字节-Mono Android

sed命令,仅在第一次出现后才添加特定工作后的文本

应用程序内购买第一次使用沙箱失败,下次工作正常

第一次失败后,如何使此Sudoku算法变得不粘滞?

第一次“使用”后,JTextField的动作侦听器失败

第一次运行修改后的代码时编译失败

第一次失败后如何使junit测试停止

Firebase调度功能在第一次调度后失败

在第一次期望失败后停止茉莉花测试

如何让模型绑定在第一次失败后不停止

ddrescue:第一次运行后重试失败的块

Django Heroku 推送在第一次后因 Grep 使用错误而失败

Cygwin-尾部在第一次写入后停止读取输入管道

为什么第一次从HDD读取文件要慢于随后的文件?

虽然Loop会在第一次失败时读取字符串退出的greps,但不会读取整个文件