Commit fc562c9a by tanghuan

ios手势测试

1 parent f88ffc93
...@@ -198,7 +198,7 @@ class WebState extends Equatable { ...@@ -198,7 +198,7 @@ class WebState extends Equatable {
]; ];
} }
class WebCubit extends Cubit<WebState> with WidgetsBindingObserver, RouteAware { class WebCubit extends Cubit<WebState> with WidgetsBindingObserver {
late final MessageDispatcher _dispatcher; late final MessageDispatcher _dispatcher;
late final WebViewController _controller; late final WebViewController _controller;
late final Fluwx _fluwx; late final Fluwx _fluwx;
...@@ -284,8 +284,10 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver, RouteAware { ...@@ -284,8 +284,10 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver, RouteAware {
// 登录IM // 登录IM
_loginIM(); _loginIM();
await IosEdgeSwipeDetector.init(); if (Platform.isIOS) {
IosEdgeSwipeDetector.onEdgeSwipe(handleBack); await IosEdgeSwipeDetector.init();
IosEdgeSwipeDetector.onEdgeSwipe(handleBack);
}
} }
Future<Map<String, String>> _getVersionConfig() async { Future<Map<String, String>> _getVersionConfig() async {
...@@ -1224,18 +1226,6 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver, RouteAware { ...@@ -1224,18 +1226,6 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver, RouteAware {
} }
@override @override
void didPush() {
debugPrint('didPush------------------ ${DateTime.now().toString()} ');
IosEdgeSwipeDetector.dispose();
}
@override
void didPop() {
debugPrint('didPop------------------ ${DateTime.now().toString()} ');
IosEdgeSwipeDetector.onEdgeSwipe(handleBack);
}
@override
Future<void> close() async { Future<void> close() async {
_server?.close(); _server?.close();
// _fluwx.removeSubscriber(_responseListener); // _fluwx.removeSubscriber(_responseListener);
...@@ -1245,6 +1235,7 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver, RouteAware { ...@@ -1245,6 +1235,7 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver, RouteAware {
if (Platform.isIOS) { if (Platform.isIOS) {
IosEdgeSwipeDetector.dispose(); IosEdgeSwipeDetector.dispose();
WebCubitHolder.unregister();
} }
// 移除观察者 // 移除观察者
...@@ -1252,4 +1243,8 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver, RouteAware { ...@@ -1252,4 +1243,8 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver, RouteAware {
return super.close(); return super.close();
} }
void test(){
debugPrint('test===================================');
}
} }
import 'dart:io';
import 'package:appframe/bloc/web_cubit.dart';
import 'package:appframe/ui/pages/adv_page.dart'; import 'package:appframe/ui/pages/adv_page.dart';
import 'package:appframe/ui/pages/im_page.dart'; import 'package:appframe/ui/pages/im_page.dart';
import 'package:appframe/ui/pages/link_page.dart'; import 'package:appframe/ui/pages/link_page.dart';
...@@ -6,12 +9,16 @@ import 'package:appframe/ui/pages/login_phone_page.dart'; ...@@ -6,12 +9,16 @@ import 'package:appframe/ui/pages/login_phone_page.dart';
import 'package:appframe/ui/pages/login_qr_page.dart'; import 'package:appframe/ui/pages/login_qr_page.dart';
import 'package:appframe/ui/pages/reload_page.dart'; import 'package:appframe/ui/pages/reload_page.dart';
import 'package:appframe/ui/pages/scan_code_page.dart'; import 'package:appframe/ui/pages/scan_code_page.dart';
import 'package:appframe/ui/pages/setting/account_page.dart';
import 'package:appframe/ui/pages/setting/account_phone_page.dart';
import 'package:appframe/ui/pages/web_page.dart'; import 'package:appframe/ui/pages/web_page.dart';
import 'package:appframe/ui/widgets/ios_edge_swipe_detector.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
final GoRouter router = GoRouter( final GoRouter router = GoRouter(
initialLocation: '/web', initialLocation: '/web',
observers: Platform.isIOS ? [AppRouteObserver()] : [],
routes: <RouteBase>[ routes: <RouteBase>[
GoRoute( GoRoute(
path: '/web', path: '/web',
...@@ -50,6 +57,18 @@ final GoRouter router = GoRouter( ...@@ -50,6 +57,18 @@ final GoRouter router = GoRouter(
}, },
), ),
GoRoute( GoRoute(
path: '/account',
builder: (BuildContext context, GoRouterState state) {
return const AccountPage();
},
),
GoRoute(
path: '/account/phone',
builder: (BuildContext context, GoRouterState state) {
return const AccountPhonePage();
},
),
GoRoute(
path: '/adv', path: '/adv',
builder: (BuildContext context, GoRouterState state) { builder: (BuildContext context, GoRouterState state) {
return const AdvPage(); return const AdvPage();
...@@ -69,3 +88,57 @@ final GoRouter router = GoRouter( ...@@ -69,3 +88,57 @@ final GoRouter router = GoRouter(
), ),
], ],
); );
///
/// 只针对iOS使用
///
class AppRouteObserver extends NavigatorObserver {
@override
void didPush(Route route, Route? previousRoute) {
super.didPush(route, previousRoute);
debugPrint("前一个路由:${previousRoute?.settings.name} 新路由:${route.settings.name}");
debugPrint("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
if (previousRoute?.settings.name == '/web') {
// 前一个路由是web,代表是从web路由中push到此路由
// 清空手势监听回调
debugPrint("取消监听--------");
IosEdgeSwipeDetector.dispose();
}
}
@override
void didPop(Route route, Route? previousRoute) {
super.didPop(route, previousRoute);
debugPrint("前一个路由:${previousRoute?.settings.name} 新路由:${route.settings.name}");
debugPrint("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
if (previousRoute?.settings.name == '/web') {
// 前一个路由是web,代表会到web
WebCubitHolder.instance?.test();
if (WebCubitHolder.instance != null) {
// 设置手势监听回调
debugPrint("设置监听--------");
IosEdgeSwipeDetector.onEdgeSwipe(WebCubitHolder.instance!.handleBack);
}
}
}
}
///
/// 只针对iOS使用
///
class WebCubitHolder {
static WebCubit? instance;
static void register(WebCubit cubit) {
instance = cubit;
}
static void unregister() {
instance = null;
}
}
...@@ -43,7 +43,7 @@ class LinkPage extends StatelessWidget { ...@@ -43,7 +43,7 @@ class LinkPage extends StatelessWidget {
return PopScope( return PopScope(
canPop: false, canPop: false,
onPopInvokedWithResult: (didPop, result) async { onPopInvokedWithResult: (didPop, result) async {
// if (didPop) return; if (didPop) return;
debugPrint(""); debugPrint("");
debugPrint("^^^^^^^^^^^^^^ Link page PopScope ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ${DateTime.now().toString()}"); debugPrint("^^^^^^^^^^^^^^ Link page PopScope ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ${DateTime.now().toString()}");
debugPrint(""); debugPrint("");
......
...@@ -39,16 +39,22 @@ class WebPage extends StatelessWidget { ...@@ -39,16 +39,22 @@ class WebPage extends StatelessWidget {
} }
return BlocProvider( return BlocProvider(
create: (context) => WebCubit( create: (context) {
WebState( final cubit = WebCubit(
loginOpFlag: loginOpFlag, WebState(
sessionCode: sessionCode, loginOpFlag: loginOpFlag,
userCode: userCode, sessionCode: sessionCode,
classCode: classCode, userCode: userCode,
userType: userType, classCode: classCode,
stuId: stuId, userType: userType,
), stuId: stuId,
), ),
);
if(Platform.isIOS) {
WebCubitHolder.register(cubit);
}
return cubit;
},
child: BlocConsumer<WebCubit, WebState>( child: BlocConsumer<WebCubit, WebState>(
builder: (ctx, state) { builder: (ctx, state) {
final scaffold = Scaffold( final scaffold = Scaffold(
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!