如何解决Flutter将图标参数作为构造函数传递
这是我的设置菜单窗口小部件页面或代码的页面
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),],)
);
}
}
这是settingWidget页面或代码:
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;
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。