默认情况下,StatefulWidget 中不会调用 initState 函数

2023-11-30

感谢您的关注。我是颤振的初学者。我不知道为什么initState默认情况下不调用该函数。因为 print(list[0]) 语句没有被运行。

import 'package:flutter/material.dart';
import 'main_page/main_page.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _MyHomePage();
}

class _MyHomePage extends State<MyHomePage> {
  int _currentIndex = 0;
  List<Widget> list = List();

  @override
  void initState() {
    list.add(MainPage());
    print(list[0]);
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: MainPage(),
      bottomNavigationBar: BottomNavigationBar(
        items: [
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            title: Text('Home')
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.person),
            title: Text('Me')
          ),
        ],
        currentIndex: _currentIndex,
        onTap: (int index) {
          setState(() {
            _currentIndex = index;
          });
        },
        type: BottomNavigationBarType.fixed,
      ),
    );
  }
}

我尝试了你的代码,它仍然正常打印。请确保您RE-RUN代码中,不要进行热重载,因为 initState() 仅被调用一次。该文件说:

框架将为它创建的每个 [State] 对象调用此方法一次。

我从 initState() 的文档中挑选了您应该遵循的一件事:

如果您重写此方法,请确保您的方法以调用 super.initState() 开始。

这意味着您必须将所有代码放在 super.initState() 下,如下所示:

@override
void initState() {
    super.initState();

    list.add(MainPage());
    print('initState() ---> ${list[0]}'); // This will print "initState() ---> MainPage"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

默认情况下,StatefulWidget 中不会调用 initState 函数 的相关文章

  • Flutter Google 日历 Api 列表事件

    Flutter Google 日历 API v3https pub dartlang org packages googleapis https pub dartlang org packages googleapis Works Futu
  • 将下拉项定位在按钮 Flutter 下方

    我正在拼命寻找一种方法将项目放置在按钮下方 正如您所看到的 如果先前选择了第一项 则列表顶部与按钮处于同一级别 但是 如果我之前选择了最后一项 则下拉列表的位置使列表在按钮级别结束 这不是我想要的行为 我希望它始终位于第一个屏幕截图中 即使
  • 如何在flutter中绘制自定义形状

    我正在尝试在我的应用程序中绘制这样的自定义形状 尝试使用自定义画家进行绘制 但尚未弄清楚如何获得这种形状 我认为它实际上只是一个带有自定义边框的容器 但甚至不知道从哪里开始 我感兴趣的只是形式 而不是内容 或者 如果有人知道如何绘制底部较薄
  • 获取外部存储的权限(file_provider 插件)

    我在使用 flutter 获取 Android 设备上的外部存储权限时遇到一些问题 当我尝试在外部存储中创建目录时 出现此错误 我只是为此示例更改了目录 在我自己的项目中 目录名称不同 I flutter 12727 EXCEPTION C
  • Android minSdkVersion 与 Flutter(v2.8.1)

    我已经安装了 firebase 包 据我们所知minSdkVersion 19被推荐 所以 我想做这个过程 但是 我看到这一行包含在android app build gradle file minSdkVersion flutter mi
  • 如何通过与flutter cloud firestore插件中的日期比较来获取记录?

    正在开发一个 flutter 应用程序 我使用 firebase cloud firestore 来存储我的所有文档 我的文档有一个开始日期时间字段的格式如下 我想获取 startDateTime 大于或等于当前日期的所有记录 这是我的颤振
  • 在桌面应用程序中将发票打印到 USB 打印机

    我正在开发 flutter 桌面应用程序 我需要将发票打印到 USB 打印机 https pub flutter io cn packages printing https pub flutter io cn packages printi
  • Flutter blue plus 在发布模式下不起作用

    flutter run release Launching lib main dart on motorola one vision in release mode Running Gradle task assembleRelease 3
  • Dart/Flutter 如何编译到 Android?

    我找不到任何具体的资源 Dart 是否被编译到 JVM 或者 Google 的团队是否编译了 Dart VM 以在 JVM 上运行 然后在 JVM 内的 Dart VM 中运行 Dart 前者更有意义 并且符合 无桥 的口号 但后者似乎更符
  • Flutter Web URL 路由不适用于真实域

    我正在尝试使用一个网址来获取参数并将该参数分配给网络文件内的变量 例如 我的域名是 example com 在这个网站中我需要用户的 ID 我想制作 example com id 123 并获取 123 id 并给出变量 123 值 在 f
  • 如何在 Android 中嵌入的 Flutter 应用中使用 --dart-define

    我将 Flutter 应用程序作为模块嵌入到现有的 Android 应用程序中 https flutter dev docs development add to app android project setup https flutte
  • 如何停止抖动中的计时器?

    我在 flutter 中创建了一个计时器 一切正常 现在我不知道如何在启动计时器后关闭它 文档说你可以通过调用取消它void cancel 但我不明白其实现 我该怎么称呼它 这是正确的方法吗 static const timeout con
  • 非抽象类“InternalSelectableMathState”缺少这些成员的实现[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 C src flutter pub cache hosted pub dartlang org flutter math
  • iPhone 上的 Flutter 底部填充颜色

    是否可以更改 iPhone 附带的底部填充的颜色 包裹你的 材料应用程序 与下面的代码main dart class AnnotatedRegion
  • Flutter - 将未来列表传递给 SearchDelegate

    我一直在关注 Flutter Search 教程 我一直在尝试使用从未来列表派生的列表来实现相同的功能 其中数据来自 api 在本例中是 Aqueduct 服务器 目前我的屏幕列出了 api 中的所有联系人 我现在想搜索该联系人列表 我假设
  • 如何更改或替换 Flutter 中的 ImageCache?

    我想更改 Flutter 应用程序中 ImageCache 的行为 例如 我想尝试不同的驱逐策略 或者 我只是想要零缓存 用于实验 如何替换更改ImageCache 创建一个继承自 WidgetsFlutterBinding 的类 重写该类
  • viewportFraction < 1.0 的 PageView 非中心对齐

    当您为 PageController 创建 viewportFraction 值为 我希望当前页面捕捉到视口的顶部 而下一页呈现在底部栏下方 我尝试对每个页面应用转换 Transform translate offset Offset 0
  • Flutter:在 Android 上获取本地 IP 地址

    如何在 Flutter 中获取我的 Android 设备的本地 IP 地址 这应该是 当连接到 WIFI 时 我的路由器通过 DHCP 分配的本地 IP 地址 如果连接到 VPN 则由我的 VPN 服务器分配的 VPN 网络中的本地 IP
  • 无法解析符号 FlutterActivity

    我使用 VCS gt Checkout from Version Control 将 flutter 项目从 github 导入到 Android Studio 中 现在我面临的问题是 Cannot resolve symbol Flutt
  • Flutter - 删除 ListView 中项目之间的空间

    我正在使用 ListView builder 函数来创建项目列表 然而 iOS 中每个项目之间的空间很大 截图 你知道如何删除项目吗 看来是默认的 因为我没有添加它 code 列表显示 return Scaffold body ListVi

随机推荐