Commit 62e5f10a by tanghuan

ios手势测试

1 parent 4903540f
import 'dart:io';
import 'package:appframe/bloc/link_cubit.dart'; import 'package:appframe/bloc/link_cubit.dart';
import 'package:appframe/ui/widgets/ios_edge_swipe_detector.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
...@@ -13,6 +16,20 @@ class LinkPage extends StatelessWidget { ...@@ -13,6 +16,20 @@ class LinkPage extends StatelessWidget {
final String? url = extraData?['url']; final String? url = extraData?['url'];
final String? title = extraData?['title']; final String? title = extraData?['title'];
if(Platform.isIOS) {
// 初始化 iOS 边缘滑动监听
IosEdgeSwipeDetector.init();
// 设置滑动回调
IosEdgeSwipeDetector.onEdgeSwipe(() {
debugPrint("");
debugPrint("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
debugPrint("检测到左边缘滑动,Flutter 收到通知");
debugPrint("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
debugPrint("");
});
}
return BlocProvider( return BlocProvider(
create: (context) => LinkCubit(LinkState(loaded: false, url: url!)), create: (context) => LinkCubit(LinkState(loaded: false, url: url!)),
child: BlocConsumer<LinkCubit, LinkState>( child: BlocConsumer<LinkCubit, LinkState>(
...@@ -35,14 +52,16 @@ class LinkPage extends StatelessWidget { ...@@ -35,14 +52,16 @@ class LinkPage extends StatelessWidget {
); );
// 为所有平台添加PopScope支持 // 为所有平台添加PopScope支持
return PopScope( // return PopScope(
canPop: false, // canPop: false,
onPopInvokedWithResult: (didPop, result) async { // onPopInvokedWithResult: (didPop, result) async {
// if (didPop) return; // // if (didPop) return;
await ctx.read<LinkCubit>().handleBack(ctx); // await ctx.read<LinkCubit>().handleBack(ctx);
}, // },
child: scaffold, // child: scaffold,
); // );
return scaffold;
}, },
listener: (context, state) {}, listener: (context, state) {},
), ),
......
import 'package:flutter/services.dart';
class IosEdgeSwipeDetector {
static const MethodChannel _channel = MethodChannel('ios_edge_swipe');
/// 初始化监听器(调用 iOS 注册边缘滑动监听)
static Future<void> init() async {
try {
await _channel.invokeMethod('initSwipeListener');
} catch (_) {}
}
/// 注册 Flutter 层监听器
static void onEdgeSwipe(VoidCallback onSwipeDetected) {
_channel.setMethodCallHandler((call) async {
if (call.method == 'onEdgeSwipe') {
onSwipeDetected();
}
});
}
}
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!