check_loation_permission_dialog.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import 'dart:io';
  2. import 'dart:ui';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter_screenutil/flutter_screenutil.dart';
  5. import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
  6. import 'package:location/resource/colors.gen.dart';
  7. import 'package:location/utils/common_expand.dart';
  8. import '../resource/assets.gen.dart';
  9. import '../resource/string.gen.dart';
  10. import '../utils/common_style.dart';
  11. class CheckLocationPermissionDialog {
  12. static final String _tag = 'CheckLocationPermissionDialog';
  13. static void show({required VoidCallback onRequestPermissionClick}) {
  14. SmartDialog.show(
  15. tag: _tag,
  16. builder: (_) {
  17. return CheckLocationPermissionView(
  18. onRequestPermissionClick: onRequestPermissionClick);
  19. });
  20. }
  21. static void dismiss() {
  22. SmartDialog.dismiss(tag: _tag);
  23. }
  24. }
  25. class CheckLocationPermissionView extends Dialog {
  26. final VoidCallback onRequestPermissionClick;
  27. const CheckLocationPermissionView(
  28. {super.key, required this.onRequestPermissionClick});
  29. @override
  30. Widget build(BuildContext context) {
  31. //图片当做背景
  32. return Container(
  33. width: 290.w,
  34. height: 230.w,
  35. decoration: BoxDecoration(
  36. image: DecorationImage(
  37. image: Assets.images.bgCheckLocationPermission.provider(),
  38. fit: BoxFit.fill,
  39. ),
  40. ),
  41. child: Column(
  42. children: [
  43. SizedBox(height: 92.w),
  44. Text(StringName.dialogRecordLocation,
  45. style: TextStyle(
  46. fontSize: 18.sp,
  47. color: '#333333'.color,
  48. fontWeight: FontWeight.bold)),
  49. SizedBox(height: 8.w),
  50. Text(StringName.dialogRecordLocationHasPermission,
  51. style: TextStyle(fontSize: 15.sp, color: '#404040'.color)),
  52. SizedBox(height: 20.6.w),
  53. if (Platform.isIOS) buildIosBtnView() else buildAndroidBtnView(),
  54. ],
  55. ),
  56. );
  57. }
  58. Widget buildIosBtnView() {
  59. return GestureDetector(
  60. onTap: () {
  61. onRequestPermissionClick.call();
  62. CheckLocationPermissionDialog.dismiss();
  63. },
  64. child: Container(
  65. width: 229.w,
  66. height: 40.w,
  67. decoration: BoxDecoration(
  68. color: ColorName.colorPrimary,
  69. borderRadius: BorderRadius.circular(54.w),
  70. ),
  71. child: Center(
  72. child: Text(StringName.nextStep,
  73. style: TextStyle(fontSize: 14.sp, color: ColorName.white)))),
  74. );
  75. }
  76. Widget buildAndroidBtnView() {
  77. return Row(
  78. mainAxisAlignment: MainAxisAlignment.center,
  79. children: [
  80. GestureDetector(
  81. onTap: () {
  82. CheckLocationPermissionDialog.dismiss();
  83. },
  84. child: Container(
  85. decoration: BoxDecoration(
  86. border: Border.all(color: '#AAAAAA'.color, width: 1.w),
  87. borderRadius: BorderRadius.circular(54.w),
  88. ),
  89. width: 109.w,
  90. height: 40.w,
  91. child: Center(
  92. child: Text(
  93. StringName.dialogRecordLocationNotRequest,
  94. style: TextStyle(fontSize: 14.sp, color: '#AAAAAA'.color),
  95. ),
  96. ),
  97. ),
  98. ),
  99. SizedBox(width: 16.w),
  100. GestureDetector(
  101. onTap: () {
  102. onRequestPermissionClick.call();
  103. CheckLocationPermissionDialog.dismiss();
  104. },
  105. child: Container(
  106. decoration: getPrimaryBtnDecoration(54.w),
  107. width: 109.w,
  108. height: 40.w,
  109. child: Center(
  110. child: Text(StringName.dialogRecordLocationRequest,
  111. style: TextStyle(fontSize: 14.sp, color: Colors.white)),
  112. ),
  113. ),
  114. )
  115. ],
  116. );
  117. }
  118. }