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

Flutter项目运行报StackOverflowError,无法显示HomePage界面

Flutter项目StackOverflowError问题排查与修复

运行Flutter项目时触发StackOverflowError,导致应用界面无法正常显示。错误在构建HomePage(状态:_HomePageState#9830f)时抛出,触发位置为lib\telas\homepage.dart:54,栈帧省略了来自_AssertionError、_RawReceivePortImpl、_Timer类及dart:async-patch的5个部分。

问题代码片段

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

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
  
  static elementAt(int opcaoselecionada) {}
}

class _HomePageState extends State<HomePage> {
  int _currentIndex = 0;

   @override
  Widget build(BuildContext context) {
    return Scaffold(
      
      bottomNavigationBar: BottomNavigationBar(
        type: BottomNavigationBarType.fixed,
        currentIndex: _currentIndex,
        onTap: (value) {
                  setState(() => _currentIndex = value);
        },
        backgroundColor: Color.fromARGB(255, 101, 190, 153),
        fixedColor: Colors.white,
        items: [
          BottomNavigationBarItem(
              icon: Icon(Icons.house_outlined),
              label: "inicial",
          ),
          BottomNavigationBarItem(
              icon: Icon(Icons.add),
              label: "Menu",
          ),
          BottomNavigationBarItem(
              icon: Icon(Icons.auto_graph),
              label: "graficos",
          ),
        ],
     

问题原因

  1. 根组件错误:main函数直接传入HomePage作为runApp的参数,而HomePage是StatefulWidget,没有被MaterialApp或CupertinoApp包裹,缺少必要的应用上下文,可能引发无限构建循环,最终触发StackOverflowError。
  2. 代码不完整:build方法中的Scaffold未完全闭合,缺少body属性和闭合括号,语法错误会导致构建异常。
  3. 无用代码:static elementAt方法无实际功能,属于冗余代码。

修复方案及代码

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.green,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  int _currentIndex = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        // 根据底部导航索引切换显示内容
        child: [
          const Text('初始页面'),
          const Text('菜单页面'),
          const Text('图表页面'),
        ][_currentIndex],
      ),
      bottomNavigationBar: BottomNavigationBar(
        type: BottomNavigationBarType.fixed,
        currentIndex: _currentIndex,
        onTap: (value) {
          setState(() => _currentIndex = value);
        },
        backgroundColor: const Color.fromARGB(255, 101, 190, 153),
        fixedColor: Colors.white,
        items: const [
          BottomNavigationBarItem(
            icon: Icon(Icons.house_outlined),
            label: "inicial",
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.add),
            label: "Menu",
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.auto_graph),
            label: "graficos",
          ),
        ],
      ),
    );
  }
}

修复说明

  • 新增MyApp根组件,用MaterialApp包裹HomePage,提供完整的应用上下文,解决循环构建问题。
  • 补全Scaffold的body部分,添加了导航切换对应的内容,并闭合所有未完成的括号。
  • 移除无实际用途的static elementAt方法,简化代码结构。
  • 添加const关键字优化组件性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:25:26