问题描述
class Setting extends StatelessWidget {
Setting(this.title);
String title;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(title),backgroundColor: Theme.of(context).primaryColor,),body: Column(
children: <Widget>[
setttingWidget(Icons.favorite),],)
);
}
}
class setttingWidget extends StatelessWidget {
setttingWidget(IconData next);
var next;
@override
Widget build(BuildContext context) {
return Card(
child: Row(
children: <Widget>[
Icon(next),Text("Network Setting",style: TextStyle(
fontSize: 20
),)
],);
}
}
我想从设置小部件中设置图标图像,所以使用图标数据,但应用程序中没有图标,代码也完全没有错误。
解决方法
这样做,
class Setting extends StatelessWidget {
final title;
Setting({this.title});
@override
Widget build(BuildContext context) {
return MaterialApp(home:Scaffold(
appBar: AppBar(
title: Text(title),backgroundColor: Theme.of(context).primaryColor,),body: Column(
children: <Widget>[
setttingWidget(Icons.favorite),],)
));
}
}
设置小部件-
class setttingWidget extends StatelessWidget {
final IconData next;
setttingWidget({this.next});
@override
Widget build(BuildContext context) {
return Card(
child: Row(
children: <Widget>[
Icon(next),Text("Network Setting",style: TextStyle(
fontSize: 20
),)
],);
}
}
您必须使用final
关键字,因为无状态小部件是不可变的,这意味着它们无法更改其状态。
您可以在下面尝试我的代码:
class Setting extends StatelessWidget {
Setting(this.title);
final String title;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(title),)
);
}
}
class setttingWidget extends StatelessWidget {
final IconData next;
setttingWidget(this.next);
@override
Widget build(BuildContext context) {
return Card(
child: Row(
children: <Widget>[
Icon(next),);
}
}
注意::如果小部件是无状态的,则其一个或多个实例字段必须是最终的。所以,
更改此内容:
var next;
到
final IconData next;
输出: