自定义组件的情况下, 如果组件是继承 StatelessWidget ,那么该组件内就不应该有可变的属性,例如:
import 'package:flutter/material.dart';import 'data/newList.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('Welcome to Flutter'),),body: HomeContent(),),theme: ThemeData(primaryColor: Colors.pink,),);}}class HomeContent extends StatelessWidget {@overrideWidget build(BuildContext context) {return Row(children: [IconWidget(Icons.home_filled, color: Colors.pink, size: 30),IconWidget(Icons.search_off, color: Colors.blue, size: 30),IconWidget(Icons.access_alarm, color: Colors.redAccent, size: 30),],);}}class IconWidget extends StatelessWidget {IconWidget(this.icon, {this.color = Colors.white70, this.size = 32});// 下面属性不应该在这里初始化, 而是在构造函数内设置默认的值,并且要 使用 final 关键字防止它改变, 否则会报警告final double size;final IconData icon;final Color color;/*// 这种写法会报警告: This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't finaldouble size = 32;IconData icon;Color color = Colors.white70 ;IconWidget(this.icon, {this.color , this.size});*/@overrideWidget build(BuildContext context) {return Container(color: this.color,width: 100,height: 100,child: Center(child: Icon(this.icon, size: this.size, color: Colors.black),),);}}
