我怎样才能在飞镖中复合吸气剂以避免重复

how can I compound getters in dart to avoid duplication

我有很多用于本地化的 getter(例如,它们来自 json 文件),例如:

  String get start {
    return localizedValues[locale.languageCode]!['start']!;
  }

  String get hours {
    return localizedValues[locale.languageCode]!['hours']!;
  }

  String get minutes {
    return localizedValues[locale.languageCode]!['minutes']!;
  }

  String get seconds {
    return localizedValues[locale.languageCode]!['seconds']!;
  }

所以我想复合它们,因为它们使用了一些通用代码(我试图创建 final someWord = commonCode; 但它没有用,所以我想问一下)

现在,如果我想联系他们,我会使用 myClass.of(context).start 例如。所以,最后,我将使用相同的方式达到,但在上面的 class 中,如果你帮助我,我不会做任何重复。所以,我需要你的帮助来避免重复。

您可以使用这个方法,并缩短代码:

  String getTime(String languageCode, String time) {

    return localizedValues[languageCode]![time]!;

  }

  getTime("1529", "seconds");
  getTime("859", "mitutes");
  getTime("9632", "hours");

我建议使用数据 class 来保存本地化数据,而不仅仅是地图,或者使用 i10n 等包来为您进行翻译。

有几种方法可以缩短此代码。对于初学者,您可以将 localizedValues[locale.languageCode]! 提取到它自己的 getter,如下所示:

Map<String, String> get localeValues => localizedValues[locale.languageCode]!;

然后你所有的方法都变得更短了:

String get seconds {
  return localeValues['seconds']!;
}

此外,您可以通过删除函数体并改用箭头函数来缩短 getters,就像我在上面对 localeValues:

所做的那样
String get seconds => localeValues['seconds']!;

对所有 getter 执行此操作,您的代码现在更短了。