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

View File

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