在Dart和Flutter中打印对象的不同方法| Dart By Example

3,940 阅读2分钟

本教程展示了在Dart 中打印一个类对象的多种方法.

在这篇文章中,你将学到多种内容

  • 如何打印类对象
  • 如何使用toString()方法打印类对象
  • 如何完全转储并打印对象变量到控制台?
  • 打印一个实例的对象属性
  • 如何显示一个类的数据
  • 打印对象变量为JSOn格式。

Dart类包含属性和函数,它是一个创建的对象实例的蓝图。

当运行应用程序时发生错误,必须将dart对象输出到控制台,以便检查实际值,进一步排除故障。当你使用print()或logger语句来打印一个对象时,它默认显示的格式是 - 'Class'的实例

让我们声明一个用于打印对象的类。

声明了Employee类,其属性为姓名和工资属性。

class Employee {
  final String name;
  final int salary;

  Employee(this.name, this.salary);

}

final e1 = Employee('Erwin', 9000);
final e2 = Employee('Andrew', 70000);
final e3 = Employee('Mark', 8000);
final e4 = Employee('Otroc', 5000);

让我们使用print()函数将该类对象打印到控制台:

main() {
  print(e1.toString()); //Instance of 'Employee'
  print(e1); //Instance of 'Employee'
}

输出结果显示在控制台中:

Instance of 'Employee'
Instance of 'Employee'

在这里,打印一个instanceinstance.toString() ,打印**'Employee'的实例,**它在内部调用object.toString()并打印它。而且它不能帮助开发者检查属性中持有的数据类型。

这篇文章讲述了在dart和flutter中显示对象内容的多种方法。

如何在Dart中打印一个dart对象到控制台

当你访问一个对象的实例变量时,默认的toString()方法返回字符串,并返回'Employee'的实例。

所以,你可以在一个类中覆盖toString()方法并打印一个对象。

让我们在Employee.dart中覆盖toString方法,在一个方法中,写一段代码,以你的格式返回属性和值。

 @override
  String toString() {
    return '{name: ${name}, salary: ${salary}}';
  }

现在,使用print()函数打印该对象实例。

main() {
  print(e1.toString()); //{name: Erwin, salary: 9000}
  print(e1); //{name: Erwin, salary: 9000}
}

输出:

{name: Erwin, salary: 9000}
{name: Erwin, salary: 9000}

如何在控制台将类对象实例打印成JSON格式

我们有很多方法可以使用JSOn库进行转换。

下面是一个简单易行的方法,以JSON格式打印对象属性。

给类添加toJson()方法 下面是添加到控制台的方法。

  Map toJson() => {"name": name, "salary": salary};

导入dart:convert 包,它可以转换编码和解码的数据类型。

下面是一个完整的例子

import 'dart:convert';

class Employee {
  final String name;
  final int salary;

  Employee(this.name, this.salary);
  Map toJson() => {"name": name, "salary": salary};
}

final e1 = Employee('Erwin', 9000);

main() {
  print(e1.toJson()); // {name: Erwin, salary: 9000}
  print(jsonEncode(e1)); //{"name":"Erwin","salary":9000}
}

输出:

{name: Erwin, salary: 9000}
{"name":"Erwin","salary":9000}

结论

学习如何使用toString方法和JSOn格式将类实例对象打印到控制台。