使用变量作为键访问对象值

Ada*_*ter 4 dart

我尝试使用先前在 dart 中定义的变量来访问类值,但我不断收到错误the operator [] isn't defined for the class

在 Javascript 中,我将使用如下变量访问对象值:

let movie = {
  movieTitle : 'Toy Story',
  actor: 'Tom Hanks'
}

let actorName = 'actor';
console.log(movie[actorName]); // <- what I'm trying to replicate in dart
// expected output: Tom Hanks
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的并抛出该错误

let movie = {
  movieTitle : 'Toy Story',
  actor: 'Tom Hanks'
}

let actorName = 'actor';
console.log(movie[actorName]); // <- what I'm trying to replicate in dart
// expected output: Tom Hanks
Run Code Online (Sandbox Code Playgroud)

我希望能够即时使用变量来访问该值。

对我来说一个简单的用例是,如果我有一个 Movie 类列表,其中一些演员和制片人为空,我想使用如下函数过滤非空演员或制片人:

List values = movieList.where((i) => i.actor != "null").toList(); // returns all Movies in movieList where the actor value isn't the string "null"

var actorIsNull = 'actor';

List values = movieList.where((i) => i[actorisNull] != "null").toList(); // throws error
Run Code Online (Sandbox Code Playgroud)

小智 10

toMap()您可以在 Movie 类中创建一个函数并使用以下方法访问属性[] operator

class Movie {
  String name;
  String actor;
  String producer;

  Map<String, dynamic> toMap() {
    return {
      'name': name,
      'actor' : actor,
      'producer' : producer,
    };
  }
}
Run Code Online (Sandbox Code Playgroud)

现在可以通过以下方式访问 Movie 类属性:

Movie movie = Movie();
movie.toMap()['name'];
Run Code Online (Sandbox Code Playgroud)