Flutter使用Colors.colorName[value]设置背景色报错的原因是什么
报错根因
- 你为
Text组件添加了const修饰符,要求整个组件为编译时常量,但Colors.lightBlue[800]这种通过方括号下标获取的颜色色阶属于运行时计算的可空值(类型为Color?),既不满足编译时常量要求,也可能出现空类型赋值错误,因此触发报错。
修复方案
方案1:移除const修饰
如果不需要将Text组件设为常量,直接删除const关键字即可,同时可以加!强制解包色阶值(确认色阶下标有效时可直接使用):
import 'package:flutter/material.dart'; void main(){ runApp(MyApp()); } class MyApp extends StatelessWidget{ @override Widget build(BuildContext context){ return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('My First App', style : TextStyle( backgroundColor : Colors.lightBlue[800]!, fontSize: 50, )), ), ), theme : ThemeData( primaryColor : Colors.purple, ), ); } }
方案2:使用色阶常量写法(保留const修饰)
所有Material Design颜色的色阶都有对应的编译时常量写法,lightBlue[800]对应的常量为Colors.lightBlue800,直接替换即可保留const修饰:
import 'package:flutter/material.dart'; void main(){ runApp(MyApp()); } class MyApp extends StatelessWidget{ @override Widget build(BuildContext context){ return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('My First App', style : TextStyle( backgroundColor : Colors.lightBlue800, fontSize: 50, )), ), ), theme : ThemeData( primaryColor : Colors.purple, ), ); } }
内容的提问来源于stack exchange,提问作者sourabh sharma
相关产品推荐
相关产品推荐

