Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在颤振状态下初始化变量之前调用Widgets build()方法_Flutter_Dart - Fatal编程技术网

Flutter 在颤振状态下初始化变量之前调用Widgets build()方法

Flutter 在颤振状态下初始化变量之前调用Widgets build()方法,flutter,dart,Flutter,Dart,我目前正在学习一门关于颤振的课程,其中包含了一些必须自己解决的问题。 其中之一包括构建一个CYOA应用程序。 在这个应用程序中,您构建了一个名为Story的类,其中包含以下故事片段和用户可以选择的两个可能的方向。 所有这些故事都保存在名为StoryBrain的类的列表中。 其中一项任务要求您检索故事开头的第一个文本,并在\u StoryPageState的构建方法中初始化文本小部件 像这样: Text( storyBrain.getStory(), style: TextStyl

我目前正在学习一门关于颤振的课程,其中包含了一些必须自己解决的问题。 其中之一包括构建一个CYOA应用程序。 在这个应用程序中,您构建了一个名为
Story
的类,其中包含以下故事片段和用户可以选择的两个可能的方向。 所有这些
故事
都保存在名为
StoryBrain
的类的列表中。 其中一项任务要求您检索故事开头的第一个文本,并在
\u StoryPageState
的构建方法中初始化
文本
小部件

像这样:

Text(
    storyBrain.getStory(),
    style: TextStyle(
        fontSize: 25.0,
    ),
),
方法
getStory()
只返回
StoryBrain
对象内故事列表中第一个
story
对象的故事文本

这里的问题是,如果我在
\u StoryPageState
类的范围内声明并初始化
StoryBrain
方法,
getStory()
返回
null
,因为变量本身或对象中的变量似乎尚未初始化。 但是,如果我在同一个文件中的全局级别上初始化一个
StoryBrain
对象(在任何类之外),我就不会有任何问题

因此,我有多个问题:

  • 第一个构建方法何时调用?在初始化变量之前调用它吗?它是在不同的进程/线程中完成的吗
  • 如何在无状态小部件中封装包含自定义数据类型的变量。(不使用和/或使用构造函数)
  • 在构建方法中初始化变量是一种好的做法吗
提前感谢。

1。)加载页面后,将立即调用第一个生成方法

2.)您需要在定义类之后定义它们,并在同一行或类构造函数中初始化它们

3)绝对不是。变量的初始化应该在类的初始化时完成,或者在对象的initState方法中完成(该方法只在StatefulWidget中完成,并且只运行一次)

关于您最初的问题,您需要在创建类时初始化变量,或者从上一个屏幕通过构造函数传入变量,并在那里实例化它们