android 地图

This commit is contained in:
2026-03-10 17:31:27 +08:00
parent a24f41a8d5
commit b846d352a2
12 changed files with 515 additions and 46 deletions

View File

@@ -1,58 +1,82 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'dart:io';
import 'package:flutter/services.dart';
/// 原生地图页面
class NativePageIOS extends StatelessWidget {
const NativePageIOS({super.key});
const NativePageIOS({super.key});
@override
Widget build(BuildContext context) {
if (Platform.isIOS) {
return Container(
// onTap: () => _handleTap(context),
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.width - 100,
// padding: EdgeInsetsGeometry.all(15),
color: Colors.red[100],
child: UiKitView(
viewType: 'NativeFirstPage', // 与原生端注册的标识一致
gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{}.toSet(),
hitTestBehavior: PlatformViewHitTestBehavior.opaque,
creationParamsCodec: const StandardMessageCodec(),
layoutDirection: TextDirection.ltr,
)
);
} else {
return const Center(child: Text('not ios'));
}
}
void _handleTap(BuildContext context) {
print("页面被点击");
_showDialog(context, 'Tip', '点击了');
}
void _showDialog(BuildContext context, String title, String content) {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text(title),
content: Text(content),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: const Text('确定'),
),
],
),
@override
Widget build(BuildContext context) {
if (Platform.isIOS) {
return _buildIOSView(context);
} else if (Platform.isAndroid) {
return _buildAndroidView(context);
} else {
return const Center(
child: Text('不支持的平台', style: TextStyle(fontSize: 16)),
);
}
}
/// 构建iOS Platform View
Widget _buildIOSView(BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height - 100,
color: Colors.white,
child: UiKitView(
viewType: 'NativeFirstPage', // 与iOS原生端注册的标识一致
gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{}.toSet(),
hitTestBehavior: PlatformViewHitTestBehavior.opaque,
creationParamsCodec: const StandardMessageCodec(),
layoutDirection: TextDirection.ltr,
),
);
}
/// 构建Android Platform View
Widget _buildAndroidView(BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height - 100,
color: Colors.white,
child: AndroidView(
viewType: 'NativeFirstPage', // 与Android原生端注册的标识一致
gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{}.toSet(),
hitTestBehavior: PlatformViewHitTestBehavior.opaque,
creationParamsCodec: const StandardMessageCodec(),
layoutDirection: TextDirection.ltr,
),
);
}
/// 处理点击事件(如需要)
void _handleTap(BuildContext context) {
if (kDebugMode) {
print("NativePage被点击");
}
_showDialog(context, '提示', '点击了原生地图页面');
}
/// 显示对话框
void _showDialog(BuildContext context, String title, String content) {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text(title),
content: Text(content),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: const Text('确定'),
),
],
),
);
}
}