Flutter中打印列表随机Task对象仅显示Instance of 'Task'如何解决
问题原因
Dart默认打印自定义类实例时,只会输出Instance of '类名'的格式,不会自动读取类内部的属性值输出,你当前打印的是Task类的实例对象,所以才会出现该现象。
解决方案
方案1:直接访问目标属性打印(最简单快捷)
修改TaskData类中的randomvo方法,打印时明确调用Task实例的name属性即可:
void randomvo() { var randomItem = (_tasks.toList()..shuffle()).first; // 改为访问name属性输出 print(randomItem.name); }
方案2:重写Task类的toString方法(通用适配)
如果后续你需要多次打印Task实例,也可以直接在Task类中重写toString方法,之后直接打印实例就会输出你自定义的内容:
class Task { final String name; Task({required this.name}); // 新增重写toString的逻辑 @override String toString() { // 这里可以自定义输出格式 return 'Task内容:$name'; } }
可选优化
你当前随机取元素的写法会完整复制一份列表再打乱,列表数据量大的时候性能开销偏高,可以直接用随机索引取值,效率更高:
import 'dart:math'; void randomvo() { final random = Random(); // 直接生成合法随机索引取值 final randomItem = _tasks[random.nextInt(_tasks.length)]; print(randomItem.name); }
内容的提问来源于stack exchange,提问作者i3arty
相关产品推荐
相关产品推荐

