如何在 Flutter/Dart 中使用此枚举扩展输出我的对象属性?
How can I output my object properties with this enumerating extension in Flutter/Dart?
我想使用此扩展打印特定的个性化对象属性-
资料来源:
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++));
}
}
我正在将文本字段中的用户数据保存到 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, Biggs, 34, 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 firstName
- flutter: Kostas // 索引 1 firstName
- flutter: Vader // 索引 6 姓氏
Class 保存到 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 并将其传递到函数中:
如果您使用模型:
class Person {
final String firstName;
final String lastName;
final String age;
final String status;
Person(
this.firstName,
this.lastName,
this.age,
this.status,
);
@override
String toString() {
return '{${this.firstName}, ${this.lastName}, ${this.age}, ${this.status}}';
}
factory Person.fromJson(List<String> list) {
return Person(list[0], list[1], list[2], list[3]);
}
}
void main() {
List<String> listPerson = <String>[];
final box = Hive.box(personTable).values.toList();
box.forEach((element) { final test = element.toString(); listPerson.add(test); print(test); });
List<String> listPersonWithoutBracket = <String>[];
for (var i = 0; i < listPerson.length; i++) {
String strWithoutBracket =
listPerson[i].replaceAll("{", "").replaceAll("}", "").trim();
listPersonWithoutBracket.add(strWithoutBracket);
}
List<List<String>> listPersonResult = <List<String>>[];
for (var i = 0; i < listPersonWithoutBracket.length; i++) {
var strSplit = listPersonWithoutBracket[i].split(", ");
listPersonResult.add(strSplit);
}
List<Person> listPersonFinal = listPersonResult.map((item) => Person.fromJson(item)).toList();
final allFirstName = listPersonFinal.map((item) {
return item.firstName;
});
final indexingBox = allFirstName.mapIndex((e, i) => '$e');
print(indexingBox);
}
Outputs
John, Kostas
终于解决了!!!
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
我想使用此扩展打印特定的个性化对象属性-
资料来源:
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++));
}
}
我正在将文本字段中的用户数据保存到 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, Biggs, 34, 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 firstName
- flutter: Kostas // 索引 1 firstName
- flutter: Vader // 索引 6 姓氏
Class 保存到 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 并将其传递到函数中:
如果您使用模型:
class Person {
final String firstName;
final String lastName;
final String age;
final String status;
Person(
this.firstName,
this.lastName,
this.age,
this.status,
);
@override
String toString() {
return '{${this.firstName}, ${this.lastName}, ${this.age}, ${this.status}}';
}
factory Person.fromJson(List<String> list) {
return Person(list[0], list[1], list[2], list[3]);
}
}
void main() {
List<String> listPerson = <String>[];
final box = Hive.box(personTable).values.toList();
box.forEach((element) { final test = element.toString(); listPerson.add(test); print(test); });
List<String> listPersonWithoutBracket = <String>[];
for (var i = 0; i < listPerson.length; i++) {
String strWithoutBracket =
listPerson[i].replaceAll("{", "").replaceAll("}", "").trim();
listPersonWithoutBracket.add(strWithoutBracket);
}
List<List<String>> listPersonResult = <List<String>>[];
for (var i = 0; i < listPersonWithoutBracket.length; i++) {
var strSplit = listPersonWithoutBracket[i].split(", ");
listPersonResult.add(strSplit);
}
List<Person> listPersonFinal = listPersonResult.map((item) => Person.fromJson(item)).toList();
final allFirstName = listPersonFinal.map((item) {
return item.firstName;
});
final indexingBox = allFirstName.mapIndex((e, i) => '$e');
print(indexingBox);
}
Outputs
John, Kostas
终于解决了!!!
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