Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 颤振-遍历对象关键帧和值_Dart_Flutter - Fatal编程技术网

Dart 颤振-遍历对象关键帧和值

Dart 颤振-遍历对象关键帧和值,dart,flutter,Dart,Flutter,我有和object,我想知道是否有一种简单的方法来遍历它的键和值 class Post { String id; String title; String article; Post( { this.id, this.title, this.article } ); } 你所要做的就是给你拥有所有属性的对象命名,例如 var object = { this.id, this.t

我有和object,我想知道是否有一种简单的方法来遍历它的键和值

class Post {
  String id;
  String title;
  String article;

  Post(
      {
        this.id,
        this.title,
        this.article
      }
      );
}

你所要做的就是给你拥有所有属性的对象命名,例如

var object = { this.id,
        this.title,
        this.article   }
for (var property in object) {
    if (object.hasOwnProperty(property)) {
        // do stuff
    }
}
没有

你要求的是反思。如果您的平台上有可用的库(它不在flatter中),您可以使用
dart:mirrors
API来实现这一点。 您可以使用为它生成代码。 或者,您可以使用从对象生成
贴图

如果你只是想为一个特定的类做点什么,我会手动的 写:
省道
映射到JSON()=>{“id”:id,“title”:title,“article”:article};

然后在你想迭代的时候使用它。

这几乎每天都让我讨厌。这也是Dart web端的一个问题。 在我看来,这是Dart的主要缺点之一

然而,这是我的解决方案。我正在为这些“可序列化”类使用接口类

abstract class JsonTO {
    Map<String, dynamic> toJson();
}

class Device implements JsonTO {
    Map<String, dynamic> toJson() {
        return ... Your serialization thing
    }  
}

main() {
    final device = Device();
    final json = device.toJson();

    json.forEach((final String key, final value) {
        _logger.info("Key: {{$key}} -> value: ${value}");
        // do with this info whatever you want
    }); 
}
抽象类json{
映射到json();
}
类设备实现JSON{
映射到JSON(){
归还……你的东西
}  
}
main(){
最终设备=设备();
final json=device.toJson();
forEach((最终字符串键,最终值){
_info(“Key:{{$Key}}->value:${value}”);
//你可以随意处理这些信息
}); 
}

您也可以使用getter?它将要求您设置所有字段一次,但之后,您可以调用字段的完整列表并遍历该列表

class Person{
  final String _firstName;
  final String _secondName;
  Person(this._firstName,this._secondName);

  String get hisName{
    return _firstName;
  }
}


class Player extends Person{

  final int _shirtNumber;

  Player(String _firstName,String _secondName,this._shirtNumber) : super(_firstName, _secondName);

  List get everything{
    final stuff=[_firstName,_secondName,_shirtNumber];

    return stuff;
  }
}


void main(List<String> arguments) {

  final foo = Player('David','Beckham',7);

  print(foo.everything);
  
  for (final blah in foo.everything){
    print(blah);
  }
}
班级人员{
最后一个字符串_firstName;
最后一个字符串_secondName;
人员(此._名,此._第二名);
字符串得到他的名字{
返回_firstName;
}
}
类玩家扩展人{
最终国际衬衫号码;
Player(String _firstName,String _secondName,this._shirtNumber):super(_firstName,_secondName);
把所有东西都列出来{
最后一件事=[[你的名字,第二个名字,衬衫号码];
归还物品;
}
}
void main(列出参数){
最终foo=球员('David','Beckham',7);
打印(foo.everything);
为了(最后一句废话,什么都说){
印刷品(废话);
}
}

您在这里写的是设置文字,而不是Dart中的对象