Flatter - Как объединить класс с переменной, чтобы получить статическую переменную из этого класса? - PullRequest
1 голос
/ 25 сентября 2019

Я делаю приложение для покемонов, и у меня есть вопрос, который у меня уже был в других проектах, и я хотел бы знать, может ли кто-нибудь помочь мне с решением.

Я получаю переменную с именем pokemonName от другихна экране, я хочу передать переменную и объединить с классом "Strings", это будет похоже на Strings. + pokemonName.toLowerCase (), преобразование в нижний регистр, чтобы получить карту из класса Strings, но я не знаю, какДобейтесь этого, чтобы убрать переключатель, и вам не нужно использовать много дел для каждого покемона.

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 ]

1 голос
/ 25 сентября 2019

То, что вы могли бы сделать, - это иметь статическую карту, проиндексированную по имени ваших покемонов и значениями которой являются карты.

class Strings {

  static Map<String, dynamic> map = {
    'Bulbasor': {},
    'Charmander': {},
    // ...
  };

}

И вы будете использовать ее так: pokemonMap = Strings.map[pokemonName].

0 голосов
/ 25 сентября 2019

~ Вы можете использовать файл JSON, чтобы делать все это, вместо этого используйте класс. ~

Я рекомендую не использовать статический класс, чтобы сделать это, вместо этого вы можете просто создать нормальный класс и создать экземпляр другогофайл, поэтому, когда класс, который вы называете другим классом, будет расположен, когда родитель был.

class PokemonStrings {

   Map bulbasaur = {your map here};

}

Чтобы вызвать его в другом файле, вам нужно просто сделать

PokemonString _pokemonString = PokemonString();

и вызватьвсе, что вам нужно в классе, который вы создаете

var bulbasaurMap = _pokemonString.bulbasaur;

Но даже в этом случае вам нужно ходить со статическим классом.Просто вызовите имя класса и точку, чтобы получить доступ ко всем статическим атрибутам

var bulbasaurMap = PokemonString.bulbasaur;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...