gpt4 book ai didi

listview - 实现 ListTile 时 Flutter Dead code Listview

转载 作者:IT王子 更新时间:2023-10-29 07:20:52 27 4
gpt4 key购买 nike

我想在我的 ListView 中实现 onTap 所以我还需要实现 return ListTile 但我有一个 死代码 在我的 ListTile 片段上。

我想知道为什么以及如何解决。

这是我的代码:

  @override
Widget build(BuildContext context) {
return ListView.separated(
itemBuilder: (context, index) {
var len = tasks.length;
debugPrint("lenght: $len and index: $index");
if(tasks.length - 1 == index) {
_loadData(index);
return Container(
alignment: Alignment.center,
padding: EdgeInsets.all(16.0),
child: SizedBox(
width: 24.0,
height: 24.0,
child: CircularProgressIndicator(strokeWidth: 2.0),
)
);
}
else {
var item = tasks[index];
return Padding(
padding: EdgeInsets.all(8.0),
child: Column(
children: <Widget>[
Row(
children: <Widget>[
getDotWidgetByType(item.taskStatus),
new Container(
padding: EdgeInsets.symmetric(horizontal: 8.0),
child: new Text(
item.taskTitle,
style: new TextStyle(
color: Colors.black,
fontSize: 18,
),
),
),
getStatusTextByType(item.taskStatus)
],
),
Container(
margin: EdgeInsets.only(top: 4.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(item.taskLeader),
Text(item.taskDeadLine),
IconButton(
onPressed: (){
//Todo change priorities/and status
},
icon: Icon(Icons.gps_fixed))
],
),
)
],
),
);
}
// DEAD CODE FROM HERE
return ListTile(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SingleTaskPage(taskItem: tasks[index]),
),
);
},
);
//TO HERE
},
separatorBuilder: (context, index) => Divider(height: 0.0),
itemCount: tasks.length
);
}

也许还有另一种实现 onTap 的方法,但我没有找到。

我的 ListTile 片段来自:https://flutter.dev/docs/cookbook/navigation/passing-data

编辑: 我有这个当前的用户界面:current UI我可以在保留此 UI 的同时完全更改我的代码。我当前的问题是:我想实现 onTap() 但我不能用我当前的代码逻辑。

最佳答案

如果您的死代码只是用于 onTap 行为,您可以将上面的代码包装在 GestureDetector 中。

@override
Widget build(BuildContext context) {
return ListView.separated(
itemBuilder: (context, index) {
var len = tasks.length;
debugPrint("lenght: $len and index: $index");
if(tasks.length - 1 == index) {
_loadData(index);
return Container(
alignment: Alignment.center,
padding: EdgeInsets.all(16.0),
child: SizedBox(
width: 24.0,
height: 24.0,
child: CircularProgressIndicator(strokeWidth: 2.0),
)
);
}
else {
var item = tasks[index];
return GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SingleTaskPage(taskItem: tasks[index]),
),
);
},
child: Padding(
padding: EdgeInsets.all(8.0),
child: Column(
children: <Widget>[
Row(
children: <Widget>[
getDotWidgetByType(item.taskStatus),
new Container(
padding: EdgeInsets.symmetric(horizontal: 8.0),
child: new Text(
item.taskTitle,
style: new TextStyle(
color: Colors.black,
fontSize: 18,
),
),
),
getStatusTextByType(item.taskStatus)
],
),
Container(
margin: EdgeInsets.only(top: 4.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(item.taskLeader),
Text(item.taskDeadLine),
IconButton(
onPressed: (){
//Todo change priorities/and status
},
icon: Icon(Icons.gps_fixed))
],
),
)
],
),
),
);
}
},
separatorBuilder: (context, index) => Divider(height: 0.0),
itemCount: tasks.length
);
}

关于listview - 实现 ListTile 时 Flutter Dead code Listview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55702361/

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