Каков наилучший способ передачи данных или аргументов между экранами приложения? - PullRequest
0 голосов
/ 03 января 2019

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

Каков наилучший способ эффективной передачи данных между экранами?

1 Ответ

0 голосов
/ 03 января 2019

Обычно лучший способ - использовать управление состоянием приложения. Вы редактируете состояние перед переключением маршрутов и читаете состояние на новом экране. Если это сделано с постоянством, это также дает возможность восстановить приложение до последнего состояния после его закрытия (что часто случается на телефонах).

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

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

Вот несколько интересных статей на эту тему.

Официальные документы для государственного управления

Redux или нет

Помощь с выбором государственного управления

Альтернативы - передавать аргументы при навигации по маршруту. Это можно сделать как часть строки маршрута (которая не работает со статическими строками маршрута) или, например, с помощью MaterialPageRoute ( см. Этот ответ ).

Существует также пакет, упрощающий передачу параметров: https://pub.dartlang.org/packages/navigate.

Пример с пакетом навигации выглядит так (взято из этой проблемы github ):

  Map arg =  {"transactionType":TransactionType.fromLeft,"replaceRoute":ReplaceRoute.thisOne};
    Navigate.navigate(context,
                          "home",
                          transactionType:TransactionType.fromLeft ,
                          replaceRoute: ReplaceRoute.thisOne,
                          arg: arg
                          );
...