You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:39:01