Flutter应用主题配置失效 无法修改背景颜色问题求助
问题根源
- 实际执行的入口是
main.dart中的main函数,你在该文件中将MaterialApp的home参数直接设为Index组件,没有外层包裹Scaffold提供背景色,无背景的组件默认透明,会透出系统窗口的黑色底色。 index.dart中定义的带背景色Scaffold的MyApp类、多余的main函数完全没有被调用,你设置的浅灰色背景代码根本没有生效。
解决方法
步骤1:清理index.dart冗余代码
删除index.dart中无用的main函数、重复定义的MyApp类,仅保留Index组件本身:
import 'package:flutter/material.dart'; import 'signup.dart'; class Index extends StatelessWidget { const Index({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ const SizedBox(height: 20,), ElevatedButton( child: const Text('WTF'), onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (context) => const SignUp()), ); } ), ] ) ); } }
步骤2:修改main.dart的页面结构
在main.dart的MaterialApp的home参数处包裹Scaffold,配置你需要的背景色:
import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'auth_controller.dart'; import 'themes/color.dart'; import 'index.dart'; Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp().then((value) => Get.put(AuthController)); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( title: 'Title', theme: ThemeData( brightness: Brightness.light, // 可选配置:全局设置所有Scaffold默认背景色,后续页面不用重复配置 scaffoldBackgroundColor: const Color(0xFFe3e4e4), ), home: Scaffold( backgroundColor: const Color(0xFFe3e4e4), appBar: AppBar( title: const Text('Flutter Screen Background Color Example'), ), body: const Index(), ), debugShowCheckedModeBanner: false, ); } }
修改后重新运行项目即可看到浅灰色背景。
内容的提问来源于stack exchange,提问作者tdrsam
相关产品推荐
相关产品推荐

