блок доступа из Navigator.push, названный во флаттере

У меня такой routing:

routes: {
    '/': (context) => MainPage(),
    '/othe_page': (context) => OthePage(),
},

Navigator.pushNamed(context, '/othe_page');

Как передать блок виджету OthePage?


person Hamed    schedule 27.01.2020    source источник
comment
Если вы хотите передать аргумент в OthePage (), есть именованный параметр, который вы можете добавить в метод pushNamed. Navigator.pushNamed (контекст, имя маршрута, аргументы:);   -  person Federick Jonathan    schedule 28.01.2020
comment
передает блок в качестве аргументов? @FederickJonathan   -  person Hamed    schedule 28.01.2020
comment
Лучше использовать BlocProvider.of (context), а не передавать сам блок, если вы используете пакет Flutter_Bloc   -  person Federick Jonathan    schedule 28.01.2020


Ответы (1)


1) передача блока в качестве аргумента

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

Navigator.pushNamed(context, '/deletewidget',
                    arguments: bloc);

Теперь вы должны принять этот блок на новой странице, как показано ниже.

class _DeleteWidgetState extends State<DeleteWidget> {
var bloc;
@override
Widget build(BuildContext context) {
bloc = ModalRoute.of(context).settings.arguments;

Примечание: вам необходимо создать переменную блока из метода сборки и назначить переменную блока в методе сборки.

-Когда вы вернетесь к последнему экрану, вы больше не сможете получить доступ к блоку.

2) вы можете использовать поставщика блоков в родительском виджете, чтобы получить доступ к блоку и на новом экране.

для получения дополнительных сведений ознакомьтесь с пакетом Flutter_bloc.

person Viren V Varasadiya    schedule 28.01.2020