You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter LateInitializationError问题:scrollController未初始化求解

解决LateInitializationError: Field 'scrollController' has not been initialised问题

需要修改的两处代码:

1. 移除StatefulWidget中冗余的ScrollController声明

UserPage类里的scrollController既未初始化也无实际用途,直接删除:

class UserPage extends StatefulWidget {
  // 移除该行:late ScrollController scrollController;

  UserPage({super.key});

  @override
  State<UserPage> createState() => UserProfile();
}

2. 在State的initState中初始化ScrollController

在UserProfile的initState方法里,添加scrollController的初始化逻辑,与tabController初始化放在一起:

@override
void initState() {
  tabController = TabController(
    length: 3,
    vsync: this,
  );
  // 新增该行初始化scrollController
  scrollController = ScrollController();
  tabController?.addListener(() {
    setState(() {});
  });
  initUser();
}

额外优化:添加资源释放逻辑

为避免内存泄漏,在UserProfile的dispose方法中销毁scrollController(若未实现该方法则新增):

@override
void dispose() {
  tabController?.dispose();
  scrollController.dispose(); // 新增该行
  super.dispose();
}

问题原因

错误根源是你用late修饰了scrollController,但未在变量首次被访问前完成初始化。late关键字强制要求变量必须在使用前赋值,之前仅声明变量未初始化,导致页面跳转时触发未初始化错误。

内容的提问来源于stack exchange,提问作者sanda17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 17:48:13