Flutter Android应用卡在Flutter Logo闪屏界面求助
Flutter应用卡在闪屏界面的解决办法
问题现象
写完代码重启应用后,Flutter一直卡在Logo闪屏界面无法进入主页面;但新建的Flutter项目能够正常运行。
环境信息
- Windows系统
- VSCode编辑器
- Pixel 8 Pro Android模拟器
已尝试的无效操作
- 执行
flutter -v排查未获取有效线索 - 执行
flutter clean后问题依旧存在
问题代码(main.dart)
import 'package:flutter/material.dart'; import 'package:expense_tracker/widgets/expenses.dart'; var kColorScheme = ColorScheme.fromSeed(seedColor: const Color.fromARGB(255, 96, 59, 181)); var kDarkColorScheme = ColorScheme.fromSeed( brightness: Brightness.dark, seedColor: const Color.fromARGB(255, 5, 99, 125)); void main() { (fn) { runApp( MaterialApp( darkTheme: ThemeData.dark().copyWith( colorScheme: kDarkColorScheme, cardTheme: const CardTheme().copyWith( color: kDarkColorScheme.secondaryContainer, margin: const EdgeInsets.symmetric( horizontal: 16, vertical: 8, ), ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: kDarkColorScheme.primaryContainer, foregroundColor: kDarkColorScheme.onPrimaryContainer), ), ), theme: ThemeData().copyWith( colorScheme: kColorScheme, appBarTheme: const AppBarTheme().copyWith( backgroundColor: kColorScheme.onPrimaryContainer, foregroundColor: kColorScheme.primaryContainer, ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: kColorScheme.primaryContainer, ), ), cardTheme: const CardTheme().copyWith( color: kColorScheme.secondaryContainer, margin: const EdgeInsets.symmetric( horizontal: 16, vertical: 8, ), ), textTheme: ThemeData().textTheme.copyWith( titleLarge: TextStyle( fontWeight: FontWeight.bold, color: kColorScheme.onSecondaryContainer, fontSize: 16), ), ), home: const Expenses(), ), ); }; }
问题根源
main函数内定义了一个匿名函数,但从未执行该函数,导致核心的runApp方法根本没有被调用——应用完成初始化后就停留在闪屏界面,没有后续的页面加载逻辑。
修复方案
直接移除多余的匿名函数包裹,让runApp在main函数内直接执行:
void main() { runApp( MaterialApp( darkTheme: ThemeData.dark().copyWith( colorScheme: kDarkColorScheme, cardTheme: const CardTheme().copyWith( color: kDarkColorScheme.secondaryContainer, margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: kDarkColorScheme.primaryContainer, foregroundColor: kDarkColorScheme.onPrimaryContainer), ), ), theme: ThemeData().copyWith( colorScheme: kColorScheme, appBarTheme: const AppBarTheme().copyWith( backgroundColor: kColorScheme.onPrimaryContainer, foregroundColor: kColorScheme.primaryContainer, ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: kColorScheme.primaryContainer, ), ), cardTheme: const CardTheme().copyWith( color: kColorScheme.secondaryContainer, margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), ), textTheme: ThemeData().textTheme.copyWith( titleLarge: TextStyle( fontWeight: FontWeight.bold, color: kColorScheme.onSecondaryContainer, fontSize: 16), ), ), home: const Expenses(), ), ); }
修改代码后重新运行应用,即可正常进入Expenses页面。
内容的提问来源于stack exchange,提问作者Harjith Ramesh
相关产品推荐
相关产品推荐

