Виджет Flutter GoRouter PopScope не работаетIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Виджет Flutter GoRouter PopScope не работает

Сообщение Anonymous »

Я работаю над приложением Flutter, используя go_router для навигации и PopScope для обратной навигации. У меня возникли проблемы с тем, что PopScope работает не так, как ожидалось.

Контекст:

  • Я использую go_router для маршрутизации в своем приложении Flutter.
  • Мне нужно показывать AlertDialog, когда пользователь пытается вернуться с определенного маршрута, но PopScope этого не делает кажется, работает так, как задумано.
  • Я хочу контролировать поведение при нажатии кнопки «Назад» и либо разрешать, либо запрещать навигацию в зависимости от пользователя. подтверждение.

Пример кода:

Вот соответствующий фрагмент кода, где Настраиваю PopScope и GoRouter:

Код: Выделить всё

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

class AppNavigation {
AppNavigation._();

static final rootNavigatorKey = GlobalKey();

static List routes = [
GoRoute(
path: "/home",
name: "Home",
builder: (BuildContext context, GoRouterState state) {
return HomePage();
},
),
// Other routes...
];

static final GoRouter router = GoRouter(
navigatorKey: rootNavigatorKey,
routes: routes,
);
}

class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Home')),
body: PopScope(
onPopInvoked: () async {
final shouldExit = await showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text('Confirmation'),
content: Text('Do you want to exit?'),
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(false),
child: Text('No'),
),
TextButton(
onPressed: () => Navigator.of(context).pop(true),
child: Text('Yes'),
),
],
),
);
return shouldExit;
},
child: Center(child: Text('Home Page Content')),
),
);
}
}

Проблема:

  • Виджет PopScope должен перехватывать обратную навигацию и отображение AlertDialog, но, похоже, он не работает должным образом.
  • AlertDialog не отображается, когда кнопка «Назад» нажата, а поведение навигации не контролируется.

Что я пробовал:

  • Убедился, что PopScope правильно используется в виджете «Навигатор».
  • Проверено, что GoRouter настроен правильно. и что конфигурация маршрута правильна.

Вопрос:

Как убедиться, что PopScope правильно работает с go_router? Существует ли известная проблема или обходной путь использования PopScope с go_router для управления обратной навигацией?
Спасибо за любую помощь или идеи!

Что я пробовал:

  • Реализовал PopScope для обработки обратной навигации в настройке GoRouter.< /p>
  • Использовал PopScope для отображения AlertDialog, запрашивающего у пользователя подтверждение при попытке вернуться назад.
  • Настроил обратный вызов onPopInvoked в PopScope для отображения AlertDialog и определения необходимости продолжения навигации.

    Что я Ожидается:

    • При нажатии кнопки «Назад» PopScope должен перехватить событие и отобразить AlertDialog.
    • AlertDialog должен предоставлять пользователю возможность подтвердить или отменить навигацию.

      Если пользователь подтвердит, навигация должна продолжиться. Если пользователь отменяет отмену, навигация должна быть заблокирована.

    Что на самом деле произошло:

    • AlertDialog не отображается при нажатии кнопки «Назад».
    • Навигация происходит сразу, без показа диалога, игнорируя PopScope конфигурация.


    Подробнее здесь: https://stackoverflow.com/questions/788 ... ot-working
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Виджет Flutter GoRouter PopScope не работает
    Anonymous » » в форуме Android
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Flutter DeepLink — GoRouter
    Anonymous » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Flutter DeepLink — GoRouter
    Anonymous » » в форуме Android
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Flutter GoRouter не отображается при повторном открытии приложения
    Anonymous » » в форуме Android
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Flutter GoRouter не отображается при повторном открытии приложения
    Anonymous » » в форуме IOS
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»