Flutter WebView и кнопка «Назад» с PopScope, показывающая черный экранIOS

Программируем под IOS
Ответить
Anonymous
 Flutter WebView и кнопка «Назад» с PopScope, показывающая черный экран

Сообщение Anonymous »

Я работаю над приложением Flutter, которое использует WebView для загрузки определенной веб-страницы. Я хочу использовать кнопку «Назад», чтобы, если пользователь переходит на другую страницу веб-сайта из WebView, он переходил на предыдущую страницу, как в браузере, в противном случае он переходил на главный экран приложения. WebView находится на странице Page3, которая находится под индексом 2. Но если пользователь не может вернуться на другие страницы внутри WebView, он должен перевести пользователя на страницу Page1, которая является главным экраном для приложение.
Я внедрил PopScope. Однако при нажатии кнопки «Назад» вместо этого я получаю черный экран в приложении.
Ниже приведены мои коды.
WebView Страница
@override
Widget build(BuildContext context) {
return PopScope(
canPop: true,
onPopInvokedWithResult: (didPop, result) async {
if (await controller.canGoBack()) {
await controller.goBack();
} else {
SystemNavigator.pop();
}
},
child: Scaffold(
backgroundColor: const Color(0xFF000000),
body: Padding(
padding: EdgeInsets.only(
bottom: MediaQuery.of(context).size.height * 0.01),
child: SafeArea(
child: WebViewWidget(
controller: controller,
),
),
),
),
);
}

navbar_widget.dart
class BottomNavbar extends StatelessWidget {
const BottomNavbar({super.key});

@override
Widget build(BuildContext context) {
return GetBuilder(
builder: (controller) => Scaffold(
extendBody: true,
appBar: AppbarWidget(tabIndex: controller.tabIndex),
bottomNavigationBar: CurvedNavigationBar(
index: controller.tabIndex,
onTap: (val) {
controller.updateIndex(val);
},
items: const [
Icon(Icons.page_1),
Icon(Icons.page_2),
Icon(Icons.page_3),
Icon(Icons.page_4),
Icon(Icons.page_5),
],
),
body: Padding(
padding:
EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.018),
child: SafeArea(
bottom: false,
child: IndexedStack(
index: controller.tabIndex,
children: const [
PageOne(),
PageTwo(),
PageThree(),
PageFour(),
PageFive(),
],
),
),
),
),
);
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... ack-screen
Ответить

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

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

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

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

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