|
|
@@ -5,10 +5,12 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
import 'package:location/resource/assets.gen.dart';
|
|
|
+import 'package:location/resource/colors.gen.dart';
|
|
|
import 'package:location/resource/string.gen.dart';
|
|
|
import 'package:location/utils/common_expand.dart';
|
|
|
|
|
|
import '../utils/common_style.dart';
|
|
|
+import 'common_confirm_dialog.dart';
|
|
|
|
|
|
class LocationPermissionDialog {
|
|
|
static const String _tag = "LocationPermissionDialog";
|
|
|
@@ -18,7 +20,7 @@ class LocationPermissionDialog {
|
|
|
tag: _tag,
|
|
|
builder: (_) {
|
|
|
if (Platform.isAndroid) {
|
|
|
- return CupertinoLocationView(onNextStep: onNextStep);
|
|
|
+ return AndroidLocationView(onNextStep: onNextStep);
|
|
|
} else {
|
|
|
return CupertinoLocationView(onNextStep: onNextStep);
|
|
|
}
|
|
|
@@ -31,7 +33,29 @@ class LocationPermissionDialog {
|
|
|
}
|
|
|
|
|
|
class AndroidLocationView extends Dialog {
|
|
|
- const AndroidLocationView({super.key});
|
|
|
+ final VoidCallback onNextStep;
|
|
|
+
|
|
|
+ const AndroidLocationView({super.key, required this.onNextStep});
|
|
|
+
|
|
|
+ @override
|
|
|
+ Widget build(BuildContext context) {
|
|
|
+ return CommonConfirmView(
|
|
|
+ titleWidget: Text(StringName.kindlyReminder,
|
|
|
+ style: TextStyle(
|
|
|
+ fontSize: 17.sp,
|
|
|
+ color: '#333333'.color,
|
|
|
+ fontWeight: FontWeight.bold)),
|
|
|
+ descWidget: Text(StringName.dialogLocationPermissionTips,
|
|
|
+ style: TextStyle(fontSize: 15.sp, color: '#404040'.color)),
|
|
|
+ confirmText: StringName.dialogLocationPermissionConfirmTxt,
|
|
|
+ cancelOnTap: () {
|
|
|
+ LocationPermissionDialog.dismiss();
|
|
|
+ },
|
|
|
+ confirmOnTap: () {
|
|
|
+ LocationPermissionDialog.dismiss();
|
|
|
+ onNextStep.call();
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
class CupertinoLocationView extends Dialog {
|
|
|
@@ -105,10 +129,11 @@ class LocationAlwaysPermissionDialog {
|
|
|
static void show({required VoidCallback onNextStep}) {
|
|
|
SmartDialog.show(
|
|
|
tag: _tag,
|
|
|
- alignment: Alignment.bottomCenter,
|
|
|
+ alignment:
|
|
|
+ Platform.isAndroid ? Alignment.center : Alignment.bottomCenter,
|
|
|
builder: (_) {
|
|
|
if (Platform.isAndroid) {
|
|
|
- return CupertinoLocationAlwaysView(onNextStep: onNextStep);
|
|
|
+ return AndroidLocationAlwaysView(onNextStep: onNextStep);
|
|
|
} else {
|
|
|
return CupertinoLocationAlwaysView(onNextStep: onNextStep);
|
|
|
}
|
|
|
@@ -120,6 +145,39 @@ class LocationAlwaysPermissionDialog {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+class AndroidLocationAlwaysView extends Dialog {
|
|
|
+ final VoidCallback onNextStep;
|
|
|
+
|
|
|
+ const AndroidLocationAlwaysView({super.key, required this.onNextStep});
|
|
|
+
|
|
|
+ @override
|
|
|
+ Widget build(BuildContext context) {
|
|
|
+ return CommonConfirmView(
|
|
|
+ titleWidget: Text(StringName.dialogLocationAlwaysPermissionTitle,
|
|
|
+ style: TextStyle(
|
|
|
+ fontSize: 17.sp,
|
|
|
+ color: '#333333'.color,
|
|
|
+ fontWeight: FontWeight.bold)),
|
|
|
+ descWidget: RichText(
|
|
|
+ text: TextSpan(
|
|
|
+ style: TextStyle(fontSize: 15.sp, color: '#404040'.color),
|
|
|
+ children: [
|
|
|
+ TextSpan(text: '如需要定位实时更新您的位置,需要在后台访问您的位置,避免轨迹缺失,请在定位权限中选择'),
|
|
|
+ TextSpan(
|
|
|
+ text: '“始终允许”',
|
|
|
+ style: TextStyle(color: ColorName.colorPrimary)),
|
|
|
+ ])),
|
|
|
+ confirmText: StringName.dialogLocationAlwaysPermissionConfirmTxt,
|
|
|
+ cancelOnTap: () {
|
|
|
+ LocationAlwaysPermissionDialog.dismiss();
|
|
|
+ },
|
|
|
+ confirmOnTap: () {
|
|
|
+ LocationAlwaysPermissionDialog.dismiss();
|
|
|
+ onNextStep.call();
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
class CupertinoLocationAlwaysView extends Dialog {
|
|
|
final VoidCallback onNextStep;
|
|
|
|