fix: 修正跳轉不正當滑動返回(ios)

修正使用 Navigator.pushReplacement (73e0f8f0) 未正常處理不正當滑動返回
This commit is contained in:
JingChiang
2024-09-03 00:42:44 +08:00
parent 13f218f089
commit 939d8ddef0
3 changed files with 25 additions and 3 deletions

20
lib/NoSwipeBackRoute.dart Normal file
View File

@@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
class NoSwipeBackRoute<T> extends MaterialPageRoute<T> {
NoSwipeBackRoute({required WidgetBuilder builder})
: super(builder: builder);
@override
bool get allowImplicitScrolling => false;
@override
bool get hasScopedWillPopCallback => true;
@override
bool get maintainState => true;
@override
bool get popGestureInProgress => false;
}

View File

@@ -3,6 +3,7 @@ import 'package:flutter/rendering.dart';
import 'package:persistent_bottom_nav_bar_v2/persistent_bottom_nav_bar_v2.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:topic/BottomNavBar.dart';
import 'package:topic/NoSwipeBackRoute.dart';
import 'package:topic/main.dart';
import 'package:topic/HomePage.dart';
import 'package:topic/HistoricalRecord.dart';
@@ -119,7 +120,7 @@ class _PersonalInfoState extends State<PersonalInfo> {
// replace screen with LoginPage and without navbar
pushReplacementWithoutNavBar(
context,
MaterialPageRoute(
NoSwipeBackRoute(
builder: (context) => LoginPage(),
));
}

View File

@@ -3,6 +3,7 @@ import 'package:flutter/rendering.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:topic/HomePage.dart';
import 'package:mysql_client/mysql_client.dart';
import 'package:topic/NoSwipeBackRoute.dart';
import 'package:topic/RegisterPage.dart';
void main() {
runApp(MaterialApp(
@@ -50,7 +51,7 @@ class _LoginPageState extends State<LoginPage> {
if(loginUserEmail != ""){
Navigator.pushReplacement(
context,
MaterialPageRoute(
NoSwipeBackRoute(
builder: (context) => HomePage(
email: loginUserEmail,
),
@@ -208,7 +209,7 @@ class _LoginPageState extends State<LoginPage> {
_setLoginInfo(email);
Navigator.pushReplacement(
context,
MaterialPageRoute(
NoSwipeBackRoute(
builder: (context) => HomePage(
email: email,
),