我正在制作一个神奇宝贝应用程序,但我有一个其他项目中已经遇到的问题,我想知道是否有人可以帮助我解决问题。
我从其他屏幕上收到一个名为pokemonName的变量,我想传递该变量并与“ Strings”类连接,就像Strings。+ pokemonName.toLowerCase(),转换为小写字母以从地图获取地图类字符串,但是我不知道如何实现此目的来删除开关,并且不需要为每个神奇宝贝使用很多情况。
class PokemonDetailScreen extends StatelessWidget {
final String pokemonName;
final String image;
Map<String, dynamic> pokemonMap = {};
PokemonDetailScreen(this.pokemonName, this.image, this.index){
getPokemonMap();
}
@override
Widget build(BuildContext context) {
return Container();
}
void getPokemonMap(){
switch(pokemonName){
case "Bulbasaur":
pokemonMap = Strings.bulbasaur;
break;
case "Charmander":
pokemonMap = Strings.charmander;
break;
}
}
}
**Class in another dart file:**
class Strings {
static Map bulbasaur = {};
}
我需要的是这样的东西:
void getPokemonMap(){
pokemonMap = Strings.$pokemonMap.toLowerCase();
}
答案 0 :(得分:1)
您所能做的就是创建一个静态地图,该地图由您的Pokemons的名称索引并且其值为地图。
class Strings {
static Map<String, dynamic> map = {
'Bulbasor': {},
'Charmander': {},
// ...
};
}
您将像这样使用它:pokemonMap = Strings.map[pokemonName]
。
答案 1 :(得分:0)
〜您可以使用JSON文件来做所有这些事情,而不是使用类。〜
我建议您不要使用静态类来执行此操作,相反,您可以只创建一个普通类并在另一个文件上实例化,这样当您调用另一个类的类将在父类存在时被处理。
class PokemonStrings {
Map bulbasaur = {your map here};
}
要在另一个文件中调用它,只需执行
PokemonString _pokemonString = PokemonString();
然后在实例化的类中调用所需的任何内容
var bulbasaurMap = _pokemonString.bulbasaur;
但是即使如此,您仍然需要使用静态类。只需调用类名,后接点即可访问所有静态属性
var bulbasaurMap = PokemonString.bulbasaur;