Flutter: жест обратного смахивания в iOS с данными

Я пытаюсь реализовать способ отправки данных обратно на предыдущий маршрут. Функция Navigator.of (context) .pop позволяет использовать параметр, который отлично работает при нажатии кнопки. Проблема в том, что на Android пользователи также могут вернуться назад с помощью специальной для Android кнопки «Назад», поэтому я попытался уловить это с помощью виджета WillPopScope. В параметре onWillPop я снова использую Navigator.of (context) .pop (data), так что теперь работа выполняется на Android. Новая проблема: теперь из-за виджета WillPopScope жесты прокрутки назад на iOS больше не работают.

Итак, возникает вопрос: как я могу отправить данные обратно на предыдущий маршрут, независимо от того, нажимал ли пользователь кнопку, которую я поместил туда, нажимал кнопку возврата для Android или использовал жест возврата на iOS?

Надеюсь, все прояснилось :)


person Chris    schedule 28.10.2019    source источник


Ответы (1)


Для iOS вы можете реализовать CupertinoPageRoute вместо MaterialPageRoute следующим образом:

import 'dart:io';
import 'package:flutter/cupertino.dart';

if(Platform.isIOS) {
   CupertinoPageRoute route = CupertinoPageRoute(
                           settings: RouteSettings(arguments: YOUR ARGUMENTS),
                           builder: (context) => SecondPage());

} 
await Navigator.push(context, route);

теперь у вас есть доступ к аргументам, которые вы передали в опоре settings при смахивании назад.

Надеюсь, это решит вашу проблему.

person FunkyMan    schedule 29.04.2020
comment
Итак, как я могу передать данные в навигатор, когда закрываю страницу смахнув назад? - person Vladislav Len; 21.06.2021
comment
@VladislavLen в CupertinoPageRoute вы передаете данные по аргументу - person Jahidul Islam; 21.06.2021