gpt4 book ai didi

flutter - 在Flutter中如何将值传递给小部件

转载 作者:行者123 更新时间:2023-12-03 04:47:56 24 4
gpt4 key购买 nike

我处于Flutter的学习阶段,我需要根据我的点击操作来确定单击哪个 _buildTile 来编写功能。

我的两个 _buildTile 如下

 _buildTile(
Padding(
padding: const EdgeInsets.all(14.0),
child: Column
(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>
[
Padding(padding: EdgeInsets.only(bottom: 5.0)),
Text('Cash Received', style: TextStyle(color: Colors.black54,
fontWeight: FontWeight.w700, fontSize: 18.0)),
Text('25,000.00', style: TextStyle(color: Colors.green,
fontWeight: FontWeight.w700, fontSize: 28.0)),
]
),
),
),

_buildTile(
Padding
(
padding: const EdgeInsets.all(14.0),
child: Column
(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>
[
Padding(padding: EdgeInsets.only(bottom: 5.0)),
Text('Cash Spent', style: TextStyle(color: Colors.black45,
fontWeight: FontWeight.w700, fontSize: 18.0)),
Text('9,000.00', style: TextStyle(color: Colors.red,
fontWeight: FontWeight.w700, fontSize: 28.0)),
]
),
),
),

在下面的函数中,如何单击 _buildTile ,如何获取值?
Widget _buildTile(Widget child, {Function() onTap}) {
return Material(
elevation: 14.0,
borderRadius: BorderRadius.circular(12.0),
shadowColor: Color(0x802196F3),
child: InkWell
(
// Do onTap() if it isn't null, otherwise do print()
onTap: onTap != null ? () => onTap() : () { print('Which _buildTile I clicked'); },
child: child
)
);}

最佳答案

您为什么不只是将一些标识符传递给_buildTile()

 _buildTile(
child: Padding( //This is your "Widget child Argument"
padding: const EdgeInsets.all(14.0),
child: Column
(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>
[
Padding(padding: EdgeInsets.only(bottom: 5.0)),
Text('Cash Received', style: TextStyle(color: Colors.black54,
fontWeight: FontWeight.w700, fontSize: 18.0)),
Text('25,000.00', style: TextStyle(color: Colors.green,
fontWeight: FontWeight.w700, fontSize: 28.0)),
]
),
),
//Under the Widget you are passing as your first argument, you pass the others
tileNumber: 1, //You can change the identifier here for each Tile you make
),

这里是buildTile();
Widget _buildTile({Widget child, {Function() onTap}, int tileNumber}) {
return Material(
elevation: 14.0,
borderRadius: BorderRadius.circular(12.0),
shadowColor: Color(0x802196F3),
child: InkWell
(
// Do onTap() if it isn't null, otherwise do print()
onTap: onTap != null ? () => onTap() : () { print("clicked tile #" + tileNumber) },
child: child
)
);}

请注意,我在_buildTile()的()中放入了额外的{},这些使您的参数成为命名参数。这意味着您可以更轻松地查看您要传递的参数。您可以看到“子级:填充”而不是“填充”在起作用。

关于flutter - 在Flutter中如何将值传递给小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61935752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com