Я новичок в трепетании и прочитал много документации по различным тематикам. Один из них - обмен данными между экранами. Я нашел много решений, и поскольку я создаю базовый проект с множеством функций, я хочу знать, какое из них лучше
Решение 1. В конструкторе
В основном, когда мы перемещаемся, мы отправляем данные через следующий виджет конструктора.
Решение 2. В сеансе
Создает синглтон, к которому можно получить доступ из любого места в приложении, и каждый раз, когда вам нужно отправить данные, вы добавляете их в сеанс, и следующий виджет может их получить.
Решение 3. Блоками
Я прочитал это решение, которое выглядит хорошо:
Я создал контейнерный класс BLoC, в котором я создал экземпляры BLoC двух экранов. Затем я установил ссылку из BLoC A на поток BLoC B, куда я хочу отправить данные. BLoC по-прежнему разделены, потому что они ничего не знают друг о друге, BLoC A не проходит через конструктор на BLoC B и наоборот, но он просто знает, что он получит некоторые данные в одном из своих потоков. .
ОБНОВЛЕНО:
Решение 4. Унаследованный виджет
Со статической функцией, например:
static InheritedDataProvider of(BuildContext context) => context.inheritFromWidgetOfExactType(InheritedDataProvider);
}
Таким образом, вы можете получить доступ к данным, инициализированным в родительском элементе, примерно так: final data = InheritedDataProvider.of(context).data;
Может быть, есть и другие решения, и я буду рад их узнать. Спасибо
ScreenA
, который извлекает список блогов, иScreenB
, чтобы отображать подробности блога. в этом сценарии я передам модель блога сScreenA
наScreenB
вместо того, чтобы загружать ее снова. - person Adnan Alshami   schedule 01.01.2021