возврат списков из одного файла dart в другой файл dart

#dart #flutter

#dart #flutter

Вопрос:

Я использую списки для создания кнопок чернильницы. Я хочу поместить списки в отдельный файл dart и импортировать файл в файлы, в которых я использую списки. Я не знаю, как импортировать списки.

https://pastebin.com/mf0kvsGu

Я создал файл dart для размещения списков.

https://prnt.sc/ndu736 «Ошибка списков»

  void _loginPressed() {
    // these handlers are called whenever the user tries to login, resend password or create an account
    print('The use wants to login with $_email and $_password');
    //if (_email == ""amp;amp; _password == "") {
    ButtonsLists();
    Navigator.push(
        context,
        MaterialPageRoute(
            builder: (BuildContext context) => BrowsePage(buttonList)));
    //}
  }
 
 class BuyItem extends StatelessWidget {
  BuyItem(this.name, this.image);

  final String name;
  final String image;

  @override
  Widget build(BuildContext context) {
    ButtonsLists();

    return InkWell(
      child: Card(
        child: GridTile(
......
 

http://prntscr.com/ndu7rc «Ошибка импорта»

Код работает, если у меня нет списков в отдельном файле, и вместо этого они находятся там, где находится ButtonsLists(); .

Комментарии:

1. Не могли бы вы предоставить больше информации? Я вижу, вы просто создаете новый ButtonLists экземпляр, не используя его внутри метода сборки. Было бы полезно, если бы вы добавили как рабочий, так и нерабочий код.

2.вот рабочий код для страницы входа в систему pastebin.com/A9MwM887 игнорируйте импорт, который я хочу разделить на список и импортировать список на эту «нерабочую страницу входа». pastebin.com/TsPx54eQ pastebin.com/mf0kvsGu

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

Ответ №1:

Это потому import , что вы импортируете только класс, записанный в файле, на который вы ссылаетесь. Точнее, возможность создавать экземпляры класса в импортированном Dart файле

Чтобы решить вашу проблему

1- Инициализируйте свои списки глобально внутри ButtonsLists класса. (перед Build() методом). Я бы предпочел объявить их final

2. Заполните свои списки данными, как вам нравится в Build() методе

3. Создайте геттеры, чтобы получить копию ваших заполненных списков

4. Создайте экземпляр ButtonsLists класса внутри _LoginPageState класса и вызывайте средство получения любого списка всякий раз, когда вам нужно

Реализация должна быть примерно такой:

 class ButtonsLists extends StatelessWidget {

final List<MainButtons> _buttonList = new List();

@override
  Widget build(BuildContext context) {
       //Build your lists here
}

List<MainButtons> getMainButtonsList(){
      return _buttonList;
}
 

Затем внутри _LoginPageState класса создайте экземпляр класса ButtonsLists следующим образом:

ButtonsLists mLists = new ButtonsLists();

и вызовите свой список в любом месте класса следующим образом:

mLists.getMainButtonsList();

Комментарии:

1. есть ли какие-либо средства получения списка flutter, которые я могу прочитать? пока это код pastebin.com/ruGrL1yy все, что мне нужно нажать, это список кнопок

2. @Robot2425 Я обновил свой ответ, если он показался вам полезным, пожалуйста, отметьте его как правильный ответ!