flutter - 仅使用 onTap 功能抖动不同的屏幕导航
问题描述
当我处理颤动的数据列表时,如何导航到不同的路线,在我的情况下,所有卡片都会将我导航到相同的路线。
面对这个问题的相关代码,
Column(
children: levelData.map((value) {
return Container(
margin: EdgeInsets.symmetric(vertical: 10.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(13.0),
border: Border.all( color: AppColors().containerBorder)
),
child: AppListTile(
contentPadding: EdgeInsets.all(15.0),
onTap: () {
},
title: Text(
value['name'],
style: TextStyle(
fontSize: displayWidth(context) * 0.045,
color: AppColors().black
),
),
subtitle: Text(
value['description'],
style: TextStyle(
color: AppColors().black,
fontSize: displayWidth(context) * 0.035
),
),
trailing: Icon(
Icons.arrow_forward_outlined,
size: displayWidth(context) * 0.08,
color: AppColors().orange,
),
),
);
}).toList(),
),
解决方案
Flutter 的一个好处是可以将函数存储为变量,而变量可以存储为数组。因此,您可以创建一个数组并将您希望您的图块执行的功能存储在该数组中,每个索引应该代表您现在构建的列表图块的索引。这是一个示例数组
var functionsArray = [
(){print("hello");},
(){print("hello");},
];
您可以编辑代码以适合此表单,如下所示:
List<Widget> getData(levelData){
List<AppListTile> data = []
for(int i=0;i < levelData.length; i++){
var tileData = levelData[i];
Function myFunction = functionsArray[i];
tile = AppListTile(onTap: myFunction);
data.add(tile);
}
return data;
}
推荐阅读
- node.js - 在另一个模块的对象内模拟函数(节点+笑话)
- python - Scrapy 在抓取一长串 url 时卡住了
- amazon-web-services - 在 AWS Cloudfront 中如何添加缓存控制?
- ios - 如何将闭包作为动作传递给添加到 UIView 的点击手势?
- c# - Unity更改设备android上的音频输出
- excel - Excel VBA 在使用另存为功能时另存为 2019/19 文件类型(但仅有时)
- python - DataBricks 中 pandas.DataFrame.tail 的等价物是什么
- python - 依次在多个列表上随机迭代
- android - 如何保存 timePickerDialog 中的 hourOfDay 和分钟以将其与其他变量进行比较?
- python - Python:pyodbc,Microsoft Access:更新表中的日期,参数太少