Flutter-如何将一个类与变量连接以从此类中获取静态变量?

时间:2019-09-25 18:26:57

标签: flutter dart static

我正在制作一个神奇宝贝应用程序,但我有一个其他项目中已经遇到的问题,我想知道是否有人可以帮助我解决问题。

我从其他屏幕上收到一个名为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();

}

2 个答案:

答案 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;