我的flutter应用程序有一个用于转到联系人页面的按钮。当GridView仅具有一个floatButton时,它运行良好。但是,当GridView具有多个floatButton时,它将出现错误。请帮助解决此问题。
错误:
class _DatabasePageState extends State<DatabasePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
appBar: AppBar(
title: Text('DB'),
centerTitle: true,
backgroundColor: Colors.black,
),
body: _showOrderdatabase(),
);
}
Widget _showOrderdatabase() {
return Column(
children: <Widget>[
Container(
height: 220.0,
color: Colors.transparent,
child: new Container(
padding: EdgeInsets.all(40.0),
decoration: new BoxDecoration(
color: Colors.green,
borderRadius: BorderRadius.all(const Radius.circular(40.0)),
),
child: new Column(
children: <Widget>[
Text(
"vds",
style: TextStyle(fontSize: 16.0),
),
IconButton(
icon: Icon(
Icons.email,
color: Colors.blueAccent,
),
iconSize: 50.0,
onPressed: () => Navigator.push(context, MaterialPageRoute(builder: (c) => new ContactUs())),
),
],
)),
),
Expanded(
child: GridView.count(
primary: false,
padding: const EdgeInsets.all(20.0),
crossAxisSpacing: 30.0,
mainAxisSpacing: 30.0,
crossAxisCount: 4,
children: <Widget>[
FloatingActionButton(
onPressed: null,
backgroundColor: Colors.orange,
child: Text('今天'),
foregroundColor: Colors.black,
),
FloatingActionButton(
onPressed: null,
backgroundColor: Colors.yellow,
child: Text('年'),
foregroundColor: Colors.black,
),
],
),
)
],
);
}
}
答案 0 :(得分:2)
FloatingActionButton
具有一个heroTag
属性,默认值为const _DefaultHeroTag(),
。
由于您有两个FloatingActionButton
,因此应为每个标签分配不同的标签:
children: <Widget>[
FloatingActionButton(
onPressed: null,
heroTag: 'Tag1',
backgroundColor: Colors.orange,
child: Text('今天'),
foregroundColor: Colors.black,
),
FloatingActionButton(
onPressed: null,
heroTag: 'Tag2',
backgroundColor: Colors.yellow,
child: Text('年'),
foregroundColor: Colors.black,
),
],
或者您可以将两者都设置为null
,因此不会向树中添加任何Hero
小部件。