Dart - 动态获取类的属性的方法

dart并不像js一样可以很方便的通便变量获取对象属性
js 有两种方式获取对象的属性

点语法, 例如 person.name
中括号语法, 例如 person ['name']

其中, 第一种不能使用变量, 而第二种可以使用变量

let person = {
name: ‘wj’,
age: 20
}

// 点表示法
// 这里不能使用变量作为对象的属性名
console.log(person.name);

// 中括号表示法
// 这里可以传入变量作为对象的属性名
let name = ‘name’;
console.log(person[name]);

我想通过传递一个字符串名称来获取一个类的属性。比如:

class A {
  String fName ='Hello';
}

main() {
A a = A();
String var1='fName'; // name of property of A class

print (a.fName); // it is working fine

print (a.$var1); // it is giving error that no getter in A class. but I want to pass var1 and automatically get the associate property

}
class Person {
  String name;
  int age;

  Person({this.age, this.name});

  Map<String, dynamic> _toMap() {
    return {
      'name': name,
      'age': age,
    };
  }

  dynamic get(String propertyName) {
    var _mapRep = _toMap();
    if (_mapRep.containsKey(propertyName)) {
      return _mapRep[propertyName];
    }
    throw ArgumentError('propery not found');
  }
}

main() {
  Person person = Person(age: 10, name: 'Bob');

  print(person.name); // 'Bob'

  print(person.get('name')); // 'Bob'
  print(person.get('age')); // 10

  // wrong property name
  print(person.get('wrong')); // throws error
}

https://www.wodecun.com/blog/8244.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你想了解关于将 JSON 转换为 Dart 代码的方法吗? 在 Dart 中,你可以使用 `json_serializable` 库来自动生成 Dart 的序列化和反序列化代码。下面是一个简单的步骤指南: 1. 首先,在你的 Dart 项目中,打开 `pubspec.yaml` 文件,并添加 `json_serializable` 和 `json_annotation` 依赖: ```yaml dependencies: json_annotation: ^4.0.1 dev_dependencies: build_runner: ^2.1.0 json_serializable: ^4.1.3 ``` 2. 运行 `flutter pub get` 命令来获取依赖项。 3. 创建一个 Dart ,该将表示你的 JSON 数据结构。例如,如果你有一个名为 `User` 的,其中包含 `id` 和 `name` 属性,可以按照以下方式创建: ```dart import 'package:json_annotation/json_annotation.dart'; part 'user.g.dart'; @JsonSerializable() class User { final int id; final String name; User({required this.id, required this.name}); factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json); Map<String, dynamic> toJson() => _$UserToJson(this); } ``` 4. 运行以下命令生成序列化和反序列化代码: ```bash flutter pub run build_runner build ``` 这将自动生成一个名为 `user.g.dart` 的文件,其中包含了 `User` 的序列化和反序列化代码。 现在,你就可以使用 `User.fromJson()` 方法将 JSON 数据转换为 `User` 对象,使用 `user.toJson()` 方法将 `User` 对象转换为 JSON 数据了。 这是一个简单的示例,你可以根据你的数据结构和需求进行相应的调整。希望这能对你有所帮助!如有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值