微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Flutter/Dart 中的枚举扩展输出我的对象属性?

如何解决如何使用 Flutter/Dart 中的枚举扩展输出我的对象属性?

我想用这个扩展打印特定的个性化对象属性- 来源:HERE

extension ExtendedIterable<E> on Iterable<E> {
  /// Like Iterable<T>.map but callback have index as second argument
  Iterable<T> mapIndex<T>(T f(E e,int i)) {
    var i = 0;
    return this.map((e) => f(e,i++));
  }

  void forEachIndex(void f(E e,int i)) {
    var i = 0;
    this.forEach((e) => f(e,i++));
  }
}

我正在将 textFields 中的用户数据保存到 Hive 框中。

当我执行以下操作时...

final Box = Hive.Box(personTable).values.toList();
    final hiveBox = Hive.Box(personTable);
    final indexingBox = Box.mapIndex((e,i) => 'item$e index$i');
    final Person person = hiveBox.getAt(0);
    print(person);
    print(indexingBox);

我打印了以下内容

Flutter: {John,Biggs,34,Active}
Flutter: (item{John,Active} index0,item{Kostas,Panger,76,Active} index1,item{Ben,Kenobi,78,Deactivated} index2,...,item{Luke,Skywalker,45,Active} index5,item{Darth,Vader,54,Active} index6)

我希望能够有选择地枚举每个对象的属性

这是我希望能够打印的内容

  • 颤抖:约翰。 // 索引 0 名字
  • Flutter: Kostas // 索引 1 firstName
  • Flutter: Vader // 索引 6 姓

将类保存到 Hive 框中:

import 'package:hive/hive.dart';
part 'person.g.dart';

@HiveType(typeId: 0)
class Person {
  @HiveField(0)
  final String firstName;
  @HiveField(1)
  final String lastName;
  @HiveField(2)
  final String age;
  @HiveField(3)
  final String status;
  Income({
    this.firstName,this.lastName,this.age,this.status,});
  @override
  String toString() {
    return '{${this.firstName},${this.lastName},${this.age},${this.status}}';
  }
}

如果我不能一劳永逸地解决这个问题,我的脑袋可能会爆炸,这是使 DataTable 非常简单和动态加载的更大图景的一部分。感谢帮助!

解决方法

从您的列表中,您可以获取 firstName 并将其传递给函数:

如果您使用模型:

await message.author.send(`Here is an invite`)
message.member.kick('they kicked themself')
,

终于解决了!!!

box.forEachIndex((e,i) {
      final hiveBox = Hive.box(personTable);
      final person = hiveBox.getAt(i) as Person;
      print('${person.firstName}');
    });

控制台

flutter: John
flutter: Obi-wan
flutter: Luke

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。