Flutter 如何通过ListTile的onTap将asset路径传递到新Screen类
解决方案
步骤1:改造目标页面类,添加参数接收逻辑
给你的cs_one页面类增加一个String类型的属性用于接收资产路径,同时修改构造函数支持参数传入,示例代码如下:
// 建议类名调整为大驼峰写法,符合Dart规范 class CsOne extends StatelessWidget { // 用于接收传递过来的资产路径 final String assetPath; // 构造函数,要求传入assetPath参数 const CsOne({super.key, required this.assetPath}); @override Widget build(BuildContext context) { // 后续你可以直接使用 this.assetPath 加载文本资产 return Scaffold( // 你的原有页面逻辑代码 ); } }
如果你的cs_one是StatefulWidget,构造参数的写法和上面一致,在对应的State类中可以通过widget.assetPath获取到传递的路径。
步骤2:修改ListTile跳转逻辑,传入路径参数
调整你原有onTap方法中跳转的代码,把资产路径作为参数传给CsOne的构造函数即可:
ListTile( leading: CircleAvatar( backgroundImage: AssetImage("image/icon.png"), ), title: Text("Story One"), trailing: Icon(Icons.arrow_forward), onTap: () { Navigator.push( context, MaterialPageRoute( builder: (context) => CsOne( // 传入目标资产路径 assetPath: 'lib/asset/textfile/cs_one.txt' ) ), ); } )
注意事项
- Dart官方推荐类名使用大驼峰命名,原代码中的
cs_one作为类名不符合规范,建议修改为CsOne避免潜在编译异常 - 传递的路径字符串需要和
pubspec.yaml中声明的资产路径完全一致,否则会导致后续资产加载失败
内容的提问来源于stack exchange,提问作者Emranul_Rakib
相关产品推荐
相关产品推荐

