Преглед изворни кода

[fix][1000543]增加有权限无录音时自动录音

zk пре 1 година
родитељ
комит
34bf972889

+ 7 - 6
android/app/src/main/AndroidManifest.xml

@@ -27,19 +27,20 @@
             android:exported="true"
             android:screenOrientation="portrait">
 
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
+
         </activity>
 
         <activity
             android:name=".activity.MainActivity"
-            android:exported="false"
+            android:exported="true"
             android:hardwareAccelerated="true"
-            android:launchMode="singleTop"
+            android:launchMode="singleTask"
             android:windowSoftInputMode="adjustResize"
             android:screenOrientation="portrait">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
             <meta-data
                 android:name="io.flutter.embedding.android.NormalTheme"
                 android:resource="@style/NormalTheme" />

+ 1 - 2
lib/data/consts/constants.dart

@@ -54,8 +54,7 @@ String getBaseUrl() {
 }
 
 bool isAgreePrivacyPolicy() {
-  return Platform.isAndroid ||
-      KVUtil.getBool(Constants.privacyPolicyKey, false);
+  return KVUtil.getBool(Constants.privacyPolicyKey, false);
 }
 
 void setPrivacyPolicy(bool isAgree) {

+ 1 - 1
lib/main.dart

@@ -101,7 +101,7 @@ class MyApp extends StatelessWidget {
       child: GetMaterialApp(
         onGenerateTitle: (_) => StringName.appName.tr,
         getPages: AppPage.pages,
-        initialRoute: Platform.isAndroid ? RoutePath.mainTab : RoutePath.splash,
+        initialRoute: RoutePath.splash,
         initialBinding: AppBinding(),
         theme: ThemeData(
           useMaterial3: true,

+ 12 - 0
lib/module/record/controller.dart

@@ -29,6 +29,7 @@ import '../../widget/frame_animation_view.dart';
 class RecordController extends BaseController {
   static const String keyLastRecordId = "last_record_id";
   static const int minRecordDuration = 3;
+  final String isRequestSuccessAudio = 'isRequestSuccessAudio';
 
   final FrameAnimationController frameAnimationController =
       FrameAnimationController(autoPlay: false);
@@ -52,6 +53,15 @@ class RecordController extends BaseController {
   }
 
   @override
+  void onReady() async {
+    super.onReady();
+    if (KVUtil.getBool(isRequestSuccessAudio, false) &&
+        !await hasUnUploadRecord()) {
+      _startOrContinueRecord();
+    }
+  }
+
+  @override
   void onClose() {
     super.onClose();
     _record.dispose();
@@ -166,6 +176,8 @@ class RecordController extends BaseController {
     if (!hasPermission) {
       _onRecordPermissionDenied();
       return;
+    } else {
+      KVUtil.putBool(isRequestSuccessAudio, true);
     }
 
     await _requestForegroundTaskPermission().catchError((error) {

+ 1 - 0
lib/module/store/controller.dart

@@ -148,6 +148,7 @@ class StoreController extends BaseController implements PaymentStatusCallback {
         LoadingDialog.hide();
       }, error: (int errno, String? error) {
         errorPayToast(errno);
+        errorEventReport(payMethod);
         LoadingDialog.hide();
       });
     } catch (error) {

+ 5 - 2
lib/utils/toast_util.dart

@@ -1,3 +1,4 @@
+import 'package:flutter/scheduler.dart';
 import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
 
 class ToastUtil {
@@ -7,8 +8,10 @@ class ToastUtil {
       {Duration? displayTime,
       SmartToastType? displayType = SmartToastType.normal}) {
     if (msg != null) {
-      SmartDialog.showToast(msg,
-          displayType: displayType, displayTime: displayTime);
+      SchedulerBinding.instance.addPostFrameCallback((_) {
+        SmartDialog.showToast(msg,
+            displayType: displayType, displayTime: displayTime);
+      });
     }
   }
 }