38 changed files with 2035 additions and 1140 deletions
Unified View
Diff Options
-
198android/.kotlin/errors/errors-1763427903700.log
-
198android/.kotlin/errors/errors-1763427903713.log
-
1android/app/src/main/AndroidManifest.xml
-
13lib/components/page_appbar.dart
-
13lib/controller/discover/room_controller.dart
-
296lib/controller/mine/edit_info_controller.dart
-
13lib/controller/mine/login_controller.dart
-
5lib/controller/mine/mine_controller.dart
-
2lib/controller/mine/user_controller.dart
-
90lib/controller/mine/user_info_controller.dart
-
103lib/controller/setting/notification_controller.dart
-
230lib/controller/setting/setting_controller.dart
-
8lib/main.dart
-
12lib/model/mine/user_data.dart
-
4lib/model/rtc/rtc_channel_data.dart
-
3lib/network/api_urls.dart
-
1lib/network/network_config.dart
-
8lib/network/rtc_api.dart
-
62lib/network/rtc_api.g.dart
-
5lib/network/user_api.dart
-
50lib/network/user_api.g.dart
-
2lib/pages/home/report_page.dart
-
7lib/pages/main/main_page.dart
-
6lib/pages/mine/auth_center_page.dart
-
230lib/pages/mine/edit_info_page.dart
-
174lib/pages/mine/login_controller.dart
-
6lib/pages/mine/mine_page.dart
-
6lib/pages/mine/phone_page.dart
-
6lib/pages/mine/real_name_page.dart
-
410lib/pages/mine/setting_page.dart
-
111lib/pages/mine/user_info_page.dart
-
0lib/pages/setting/blacklist_page.dart
-
77lib/pages/setting/notice_page.dart
-
153lib/pages/setting/setting_page.dart
-
22lib/rtc/rtc_manager.dart
-
163lib/rtc/rtm_manager.dart
-
484pubspec.lock
-
3pubspec.yaml
@ -0,0 +1,198 @@ |
|||||
|
kotlin version: 2.1.0 |
||||
|
error message: Daemon compilation failed: null |
||||
|
java.lang.Exception |
||||
|
at org.jetbrains.kotlin.daemon.common.CompileService$CallResult$Error.get(CompileService.kt:69) |
||||
|
at org.jetbrains.kotlin.daemon.common.CompileService$CallResult$Error.get(CompileService.kt:65) |
||||
|
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:240) |
||||
|
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:159) |
||||
|
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:111) |
||||
|
at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:76) |
||||
|
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63) |
||||
|
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66) |
||||
|
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62) |
||||
|
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100) |
||||
|
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62) |
||||
|
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) |
||||
|
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) |
||||
|
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) |
||||
|
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59) |
||||
|
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174) |
||||
|
at java.base/java.util.concurrent.FutureTask.run(Unknown Source) |
||||
|
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194) |
||||
|
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127) |
||||
|
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169) |
||||
|
at org.gradle.internal.Factories$1.create(Factories.java:31) |
||||
|
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263) |
||||
|
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127) |
||||
|
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132) |
||||
|
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164) |
||||
|
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133) |
||||
|
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) |
||||
|
at java.base/java.util.concurrent.FutureTask.run(Unknown Source) |
||||
|
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) |
||||
|
at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48) |
||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) |
||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) |
||||
|
at java.base/java.lang.Thread.run(Unknown Source) |
||||
|
Caused by: java.lang.AssertionError: java.lang.Exception: Could not close incremental caches in D:\www\dating_touchme_app\build\shared_preferences_android\kotlin\compileDebugKotlin\cacheable\caches-jvm\jvm\kotlin: class-fq-name-to-source.tab, source-to-classes.tab, internal-name-to-source.tab |
||||
|
at org.jetbrains.kotlin.com.google.common.io.Closer.close(Closer.java:236) |
||||
|
at org.jetbrains.kotlin.incremental.IncrementalCachesManager.close(IncrementalCachesManager.kt:55) |
||||
|
at kotlin.io.CloseableKt.closeFinally(Closeable.kt:56) |
||||
|
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileNonIncrementally(IncrementalCompilerRunner.kt:293) |
||||
|
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:129) |
||||
|
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:674) |
||||
|
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:91) |
||||
|
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1659) |
||||
|
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) |
||||
|
at java.base/java.lang.reflect.Method.invoke(Unknown Source) |
||||
|
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.Transport$1.run(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.Transport$1.run(Unknown Source) |
||||
|
at java.base/java.security.AccessController.doPrivileged(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.Transport.serviceCall(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(Unknown Source) |
||||
|
at java.base/java.security.AccessController.doPrivileged(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) |
||||
|
... 3 more |
||||
|
Caused by: java.lang.Exception: Could not close incremental caches in D:\www\dating_touchme_app\build\shared_preferences_android\kotlin\compileDebugKotlin\cacheable\caches-jvm\jvm\kotlin: class-fq-name-to-source.tab, source-to-classes.tab, internal-name-to-source.tab |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:95) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.close(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.com.google.common.io.Closer.close(Closer.java:223) |
||||
|
... 22 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\shared_preferences_android-2.4.16\android\src\main\kotlin\io\flutter\plugins\sharedpreferences\MessagesAsync.g.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.save(FileToPathConverter.kt:33) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.save(FileToPathConverter.kt:30) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:443) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.PersistentStorageWrapper.close(PersistentStorage.kt:124) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 24 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\shared_preferences_android-2.4.16\android\src\main\kotlin\io\flutter\plugins\sharedpreferences\MessagesAsync.g.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:50) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:30) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.hashKey(LinkedCustomHashMap.java:109) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.remove(LinkedCustomHashMap.java:153) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.SLRUMap.remove(SLRUMap.java:89) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.flushAppendCache(PersistentMapImpl.java:999) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:451) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableInMemoryStorage.applyChanges(InMemoryStorage.kt:179) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableSetBasicMap.close(BasicMap.kt:157) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 24 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\shared_preferences_android-2.4.16\android\src\main\kotlin\io\flutter\plugins\sharedpreferences\MessagesAsync.g.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.save(FileToPathConverter.kt:33) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.save(FileToPathConverter.kt:30) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableCollectionExternalizer.save(LazyStorage.kt:151) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableCollectionExternalizer.save(LazyStorage.kt:142) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:443) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableInMemoryStorage.applyChanges(InMemoryStorage.kt:179) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.PersistentStorageWrapper.close(PersistentStorage.kt:124) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 24 more |
||||
|
Suppressed: java.lang.Exception: Could not close incremental caches in D:\www\dating_touchme_app\build\shared_preferences_android\kotlin\compileDebugKotlin\cacheable\caches-jvm\lookups: id-to-file.tab, file-to-id.tab |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:95) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.close(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.LookupStorage.close(LookupStorage.kt:155) |
||||
|
... 23 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\shared_preferences_android-2.4.16\android\src\main\kotlin\io\flutter\plugins\sharedpreferences\MessagesAsync.g.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LegacyFileExternalizer.save(IdToFileMap.kt:51) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LegacyFileExternalizer.save(IdToFileMap.kt:48) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:443) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.PersistentStorageWrapper.close(PersistentStorage.kt:124) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 25 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\shared_preferences_android-2.4.16\android\src\main\kotlin\io\flutter\plugins\sharedpreferences\MessagesAsync.g.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:50) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:30) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.hashKey(LinkedCustomHashMap.java:109) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.remove(LinkedCustomHashMap.java:153) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.SLRUMap.remove(SLRUMap.java:89) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.flushAppendCache(PersistentMapImpl.java:999) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:451) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.PersistentStorageWrapper.close(PersistentStorage.kt:124) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 25 more |
||||
|
Suppressed: java.lang.Exception: Could not close incremental caches in D:\www\dating_touchme_app\build\shared_preferences_android\kotlin\compileDebugKotlin\cacheable\caches-jvm\inputs: source-to-output.tab |
||||
|
... 25 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\shared_preferences_android-2.4.16\android\src\main\kotlin\io\flutter\plugins\sharedpreferences\MessagesAsync.g.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:50) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:30) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.hashKey(LinkedCustomHashMap.java:109) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.remove(LinkedCustomHashMap.java:153) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.SLRUMap.remove(SLRUMap.java:89) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.flushAppendCache(PersistentMapImpl.java:999) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:451) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableInMemoryStorage.applyChanges(InMemoryStorage.kt:179) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableSetBasicMap.close(BasicMap.kt:157) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 24 more |
||||
|
|
||||
|
|
||||
@ -0,0 +1,198 @@ |
|||||
|
kotlin version: 2.1.0 |
||||
|
error message: Daemon compilation failed: null |
||||
|
java.lang.Exception |
||||
|
at org.jetbrains.kotlin.daemon.common.CompileService$CallResult$Error.get(CompileService.kt:69) |
||||
|
at org.jetbrains.kotlin.daemon.common.CompileService$CallResult$Error.get(CompileService.kt:65) |
||||
|
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:240) |
||||
|
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:159) |
||||
|
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:111) |
||||
|
at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:76) |
||||
|
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63) |
||||
|
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66) |
||||
|
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62) |
||||
|
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100) |
||||
|
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62) |
||||
|
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) |
||||
|
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) |
||||
|
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) |
||||
|
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) |
||||
|
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59) |
||||
|
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174) |
||||
|
at java.base/java.util.concurrent.FutureTask.run(Unknown Source) |
||||
|
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194) |
||||
|
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127) |
||||
|
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169) |
||||
|
at org.gradle.internal.Factories$1.create(Factories.java:31) |
||||
|
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263) |
||||
|
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127) |
||||
|
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132) |
||||
|
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164) |
||||
|
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133) |
||||
|
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) |
||||
|
at java.base/java.util.concurrent.FutureTask.run(Unknown Source) |
||||
|
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) |
||||
|
at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48) |
||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) |
||||
|
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) |
||||
|
at java.base/java.lang.Thread.run(Unknown Source) |
||||
|
Caused by: java.lang.AssertionError: java.lang.Exception: Could not close incremental caches in D:\www\dating_touchme_app\build\video_player_android\kotlin\compileDebugKotlin\cacheable\caches-jvm\jvm\kotlin: class-fq-name-to-source.tab, source-to-classes.tab, internal-name-to-source.tab |
||||
|
at org.jetbrains.kotlin.com.google.common.io.Closer.close(Closer.java:236) |
||||
|
at org.jetbrains.kotlin.incremental.IncrementalCachesManager.close(IncrementalCachesManager.kt:55) |
||||
|
at kotlin.io.CloseableKt.closeFinally(Closeable.kt:56) |
||||
|
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileNonIncrementally(IncrementalCompilerRunner.kt:293) |
||||
|
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:129) |
||||
|
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:674) |
||||
|
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:91) |
||||
|
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1659) |
||||
|
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) |
||||
|
at java.base/java.lang.reflect.Method.invoke(Unknown Source) |
||||
|
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.Transport$1.run(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.Transport$1.run(Unknown Source) |
||||
|
at java.base/java.security.AccessController.doPrivileged(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.Transport.serviceCall(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(Unknown Source) |
||||
|
at java.base/java.security.AccessController.doPrivileged(Unknown Source) |
||||
|
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) |
||||
|
... 3 more |
||||
|
Caused by: java.lang.Exception: Could not close incremental caches in D:\www\dating_touchme_app\build\video_player_android\kotlin\compileDebugKotlin\cacheable\caches-jvm\jvm\kotlin: class-fq-name-to-source.tab, source-to-classes.tab, internal-name-to-source.tab |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:95) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.close(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.com.google.common.io.Closer.close(Closer.java:223) |
||||
|
... 22 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\video_player_android-2.8.19\android\src\main\kotlin\io\flutter\plugins\videoplayer\Messages.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.save(FileToPathConverter.kt:33) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.save(FileToPathConverter.kt:30) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:443) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.PersistentStorageWrapper.close(PersistentStorage.kt:124) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 24 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\video_player_android-2.8.19\android\src\main\kotlin\io\flutter\plugins\videoplayer\Messages.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:50) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:30) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.hashKey(LinkedCustomHashMap.java:109) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.remove(LinkedCustomHashMap.java:153) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.SLRUMap.remove(SLRUMap.java:89) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.flushAppendCache(PersistentMapImpl.java:999) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:451) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableInMemoryStorage.applyChanges(InMemoryStorage.kt:179) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableSetBasicMap.close(BasicMap.kt:157) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 24 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\video_player_android-2.8.19\android\src\main\kotlin\io\flutter\plugins\videoplayer\Messages.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.save(FileToPathConverter.kt:33) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.save(FileToPathConverter.kt:30) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableCollectionExternalizer.save(LazyStorage.kt:151) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableCollectionExternalizer.save(LazyStorage.kt:142) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:443) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableInMemoryStorage.applyChanges(InMemoryStorage.kt:179) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.PersistentStorageWrapper.close(PersistentStorage.kt:124) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 24 more |
||||
|
Suppressed: java.lang.Exception: Could not close incremental caches in D:\www\dating_touchme_app\build\video_player_android\kotlin\compileDebugKotlin\cacheable\caches-jvm\lookups: id-to-file.tab, file-to-id.tab |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:95) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.close(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.LookupStorage.close(LookupStorage.kt:155) |
||||
|
... 23 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\video_player_android-2.8.19\android\src\main\kotlin\io\flutter\plugins\videoplayer\Messages.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LegacyFileExternalizer.save(IdToFileMap.kt:51) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LegacyFileExternalizer.save(IdToFileMap.kt:48) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:443) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.PersistentStorageWrapper.close(PersistentStorage.kt:124) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 25 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\video_player_android-2.8.19\android\src\main\kotlin\io\flutter\plugins\videoplayer\Messages.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:50) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:30) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.hashKey(LinkedCustomHashMap.java:109) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.remove(LinkedCustomHashMap.java:153) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.SLRUMap.remove(SLRUMap.java:89) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.flushAppendCache(PersistentMapImpl.java:999) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:451) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.PersistentStorageWrapper.close(PersistentStorage.kt:124) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 25 more |
||||
|
Suppressed: java.lang.Exception: Could not close incremental caches in D:\www\dating_touchme_app\build\video_player_android\kotlin\compileDebugKotlin\cacheable\caches-jvm\inputs: source-to-output.tab |
||||
|
... 25 more |
||||
|
Suppressed: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\video_player_android-2.8.19\android\src\main\kotlin\io\flutter\plugins\videoplayer\Messages.kt and D:\www\dating_touchme_app\android. |
||||
|
at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117) |
||||
|
at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128) |
||||
|
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:24) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:50) |
||||
|
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:30) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.hashKey(LinkedCustomHashMap.java:109) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.remove(LinkedCustomHashMap.java:153) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.containers.SLRUMap.remove(SLRUMap.java:89) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.flushAppendCache(PersistentMapImpl.java:999) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:451) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.put(PersistentMapImpl.java:422) |
||||
|
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.put(PersistentHashMap.java:105) |
||||
|
at org.jetbrains.kotlin.incremental.storage.LazyStorage.set(LazyStorage.kt:80) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.applyChanges(InMemoryStorage.kt:108) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableInMemoryStorage.applyChanges(InMemoryStorage.kt:179) |
||||
|
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.close(InMemoryStorage.kt:136) |
||||
|
at org.jetbrains.kotlin.incremental.storage.AppendableSetBasicMap.close(BasicMap.kt:157) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner$close$1.invoke(BasicMapsOwner.kt:53) |
||||
|
at org.jetbrains.kotlin.incremental.storage.BasicMapsOwner.forEachMapSafe(BasicMapsOwner.kt:87) |
||||
|
... 24 more |
||||
|
|
||||
|
|
||||
@ -0,0 +1,103 @@ |
|||||
|
// controllers/notification_controller.dart |
||||
|
import 'package:get/get.dart'; |
||||
|
import 'package:permission_handler/permission_handler.dart'; |
||||
|
import 'package:app_settings/app_settings.dart'; |
||||
|
|
||||
|
class NotificationController extends GetxController { |
||||
|
// 权限状态 |
||||
|
final Rx<PermissionStatus> notificationStatus = PermissionStatus.denied.obs; |
||||
|
final RxBool checking = false.obs; |
||||
|
|
||||
|
// 初始化时检查权限 |
||||
|
@override |
||||
|
void onInit() { |
||||
|
super.onInit(); |
||||
|
// 延迟检查,确保服务已初始化 |
||||
|
checkPermission(); |
||||
|
} |
||||
|
|
||||
|
// 检查通知权限状态 |
||||
|
Future<PermissionStatus> checkPermission() async { |
||||
|
checking.value = true; |
||||
|
try { |
||||
|
// 检查通知权限 |
||||
|
final status = await Permission.notification.status; |
||||
|
notificationStatus.value = status; |
||||
|
|
||||
|
print('通知权限状态: $status'); |
||||
|
return status; |
||||
|
} catch (e) { |
||||
|
print('检查通知权限失败: $e'); |
||||
|
return PermissionStatus.denied; |
||||
|
} finally { |
||||
|
checking.value = false; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 请求通知权限 |
||||
|
Future<PermissionStatus> requestNotificationPermission() async { |
||||
|
try { |
||||
|
final status = await Permission.notification.request(); |
||||
|
notificationStatus.value = status; |
||||
|
|
||||
|
print('请求通知权限结果: $status'); |
||||
|
return status; |
||||
|
} catch (e) { |
||||
|
print('请求通知权限失败: $e'); |
||||
|
return PermissionStatus.denied; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 打开应用设置页面(让用户手动开启权限) |
||||
|
Future<void> openSettings() async { |
||||
|
try { |
||||
|
AppSettings.openAppSettings( |
||||
|
type: AppSettingsType.notification, |
||||
|
); |
||||
|
} catch (e) { |
||||
|
print('打开设置页面失败: $e'); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 检查是否有通知权限的便捷方法 |
||||
|
// Future<bool> hasNotificationPermission() async { |
||||
|
// final status = await checkNotificationPermission(); |
||||
|
// return status.isGranted || status.isLimited; |
||||
|
// } |
||||
|
|
||||
|
// 获取权限状态描述 |
||||
|
String getPermissionStatusText() { |
||||
|
switch (notificationStatus.value) { |
||||
|
case PermissionStatus.granted: |
||||
|
return '已开启'; |
||||
|
case PermissionStatus.denied: |
||||
|
return '已拒绝'; |
||||
|
case PermissionStatus.restricted: |
||||
|
return '受限制'; |
||||
|
case PermissionStatus.limited: |
||||
|
return '部分授权'; |
||||
|
case PermissionStatus.permanentlyDenied: |
||||
|
return '永久拒绝'; |
||||
|
case PermissionStatus.provisional: |
||||
|
return '临时授权'; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 获取权限状态颜色 |
||||
|
String getPermissionStatusColor() { |
||||
|
switch (notificationStatus.value) { |
||||
|
case PermissionStatus.granted: |
||||
|
return '绿色'; |
||||
|
case PermissionStatus.denied: |
||||
|
return '橙色'; |
||||
|
case PermissionStatus.restricted: |
||||
|
return '红色'; |
||||
|
case PermissionStatus.limited: |
||||
|
return '蓝色'; |
||||
|
case PermissionStatus.permanentlyDenied: |
||||
|
return '红色'; |
||||
|
case PermissionStatus.provisional: |
||||
|
return '黄色'; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,230 @@ |
|||||
|
import 'dart:async'; |
||||
|
import 'package:dating_touchme_app/controller/global.dart'; |
||||
|
import 'package:dating_touchme_app/extension/ex_widget.dart'; |
||||
|
import 'package:flutter/material.dart'; |
||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
||||
|
import 'package:get/get.dart'; |
||||
|
import 'package:get_storage/get_storage.dart'; |
||||
|
import 'package:tdesign_flutter/tdesign_flutter.dart'; |
||||
|
import '../../generated/assets.dart'; |
||||
|
import 'package:package_info_plus/package_info_plus.dart'; |
||||
|
|
||||
|
class SettingController extends GetxController { |
||||
|
|
||||
|
final storage = GetStorage(); |
||||
|
final appName = ''.obs; |
||||
|
final packageName = ''.obs; |
||||
|
final version = ''.obs; |
||||
|
final buildNumber = ''.obs; |
||||
|
|
||||
|
@override |
||||
|
Future<void> onInit() async { |
||||
|
super.onInit(); |
||||
|
// 从全局依赖中获取UserApi |
||||
|
await getAppInfo(); |
||||
|
} |
||||
|
// 获取验证码 |
||||
|
Future<void> getAppInfo() async { |
||||
|
try { |
||||
|
PackageInfo packageInfo = await PackageInfo.fromPlatform(); |
||||
|
appName.value = packageInfo.appName; |
||||
|
packageName.value = packageInfo.packageName; |
||||
|
version.value = packageInfo.version; |
||||
|
buildNumber.value = packageInfo.buildNumber; |
||||
|
} catch (e) { |
||||
|
print('获取应用信息失败: $e'); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
Future<void> checkVersion() async { |
||||
|
try { |
||||
|
_showUpdateDialog(); |
||||
|
} catch (e) { |
||||
|
print('检测版本跟新失败: $e'); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void logout(){ |
||||
|
storage.erase(); |
||||
|
GlobalData().logout(); |
||||
|
} |
||||
|
|
||||
|
// 弹出版本升级的dialog |
||||
|
void _showUpdateDialog(){ |
||||
|
Navigator.of(Get.context!).push(TDSlidePopupRoute( |
||||
|
modalBarrierColor: TDTheme.of(Get.context!).fontGyColor2, |
||||
|
slideTransitionFrom: SlideTransitionFrom.center, |
||||
|
builder: (context) { |
||||
|
return Material( |
||||
|
color: Colors.transparent, |
||||
|
child: Container( |
||||
|
color: Colors.transparent, |
||||
|
width: 299.w, |
||||
|
padding: EdgeInsets.only(top: 56.w), |
||||
|
child: Stack( |
||||
|
clipBehavior: Clip.none, |
||||
|
children: [ |
||||
|
Container( |
||||
|
width: 299.w, |
||||
|
padding: EdgeInsets.only( |
||||
|
top: 147.w, |
||||
|
left: 30.w, |
||||
|
right: 30.w, |
||||
|
bottom: 25.w |
||||
|
), |
||||
|
decoration: BoxDecoration( |
||||
|
borderRadius: BorderRadius.all(Radius.circular(18.w)), |
||||
|
color: Colors.white |
||||
|
), |
||||
|
child: Column( |
||||
|
crossAxisAlignment: CrossAxisAlignment.start, |
||||
|
mainAxisSize: MainAxisSize.min, |
||||
|
children: [ |
||||
|
Text( |
||||
|
"体验全新升级v1.2.0", |
||||
|
style: TextStyle( |
||||
|
fontSize: 16.w, |
||||
|
fontWeight: FontWeight.w500 |
||||
|
), |
||||
|
), |
||||
|
SizedBox(height: 14.w,), |
||||
|
Row( |
||||
|
crossAxisAlignment: CrossAxisAlignment.start, |
||||
|
children: [ |
||||
|
Container( |
||||
|
width: 2.w, |
||||
|
height: 5.w, |
||||
|
margin: EdgeInsets.only( |
||||
|
right: 10.w, |
||||
|
top: 6.w |
||||
|
), |
||||
|
decoration: BoxDecoration( |
||||
|
borderRadius: BorderRadius.all(Radius.circular(2.w)), |
||||
|
color: const Color.fromRGBO(51, 51, 51, 1) |
||||
|
), |
||||
|
), |
||||
|
SizedBox( |
||||
|
width: 204.w, |
||||
|
child: Text( |
||||
|
"首页风格改版,更全面的内容,恍然一新的视觉用户体验。", |
||||
|
style: TextStyle( |
||||
|
fontSize: 12.w, |
||||
|
), |
||||
|
), |
||||
|
) |
||||
|
], |
||||
|
), |
||||
|
SizedBox(height: 8.w,), |
||||
|
Row( |
||||
|
crossAxisAlignment: CrossAxisAlignment.start, |
||||
|
children: [ |
||||
|
Container( |
||||
|
width: 2.w, |
||||
|
height: 5.w, |
||||
|
margin: EdgeInsets.only( |
||||
|
right: 10.w, |
||||
|
top: 6.w |
||||
|
), |
||||
|
decoration: BoxDecoration( |
||||
|
borderRadius: BorderRadius.all(Radius.circular(2.w)), |
||||
|
color: const Color.fromRGBO(51, 51, 51, 1) |
||||
|
), |
||||
|
), |
||||
|
SizedBox( |
||||
|
width: 204.w, |
||||
|
child: Text( |
||||
|
"优化了动画细节,让产品更流畅。", |
||||
|
style: TextStyle( |
||||
|
fontSize: 12.w, |
||||
|
), |
||||
|
), |
||||
|
) |
||||
|
], |
||||
|
), |
||||
|
SizedBox(height: 32.w,), |
||||
|
Row( |
||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
||||
|
children: [ |
||||
|
Container( |
||||
|
width: 113.w, |
||||
|
height: 40.w, |
||||
|
decoration: BoxDecoration( |
||||
|
borderRadius: BorderRadius.all(Radius.circular(9.w)), |
||||
|
color: const Color.fromRGBO(245, 245, 245, 1) |
||||
|
), |
||||
|
child: Center( |
||||
|
child: Text( |
||||
|
"暂不更新", |
||||
|
style: TextStyle( |
||||
|
fontSize: 15.w, |
||||
|
color: const Color.fromRGBO(144, 144, 144, 1) |
||||
|
), |
||||
|
), |
||||
|
), |
||||
|
).onTap((){ |
||||
|
Navigator.of(context).pop(); |
||||
|
}), |
||||
|
Container( |
||||
|
width: 113.w, |
||||
|
height: 40.w, |
||||
|
decoration: BoxDecoration( |
||||
|
borderRadius: BorderRadius.all(Radius.circular(9.w)), |
||||
|
color: const Color.fromRGBO(245, 245, 245, 1), |
||||
|
gradient: const LinearGradient( |
||||
|
begin: Alignment.centerLeft, |
||||
|
end: Alignment.centerRight, // 对应 CSS 90deg |
||||
|
colors: [ |
||||
|
Color.fromRGBO(131, 89, 255, 1), // rgba(131, 89, 255, 1) |
||||
|
Color.fromRGBO(61, 138, 224, 1), // rgba(61, 138, 224, 1) |
||||
|
], |
||||
|
), |
||||
|
), |
||||
|
child: Center( |
||||
|
child: Text( |
||||
|
"立即升级", |
||||
|
style: TextStyle( |
||||
|
fontSize: 15.w, |
||||
|
fontWeight: FontWeight.w500, |
||||
|
color: Colors.white |
||||
|
), |
||||
|
), |
||||
|
), |
||||
|
), |
||||
|
], |
||||
|
) |
||||
|
], |
||||
|
), |
||||
|
), |
||||
|
Positioned( |
||||
|
left: 0, |
||||
|
top: -56.w, |
||||
|
child: Image.asset( |
||||
|
Assets.imagesUpdataBg, |
||||
|
width: 299.w, |
||||
|
), |
||||
|
), |
||||
|
Positioned( |
||||
|
left: 11.w, |
||||
|
top: -14.w, |
||||
|
child: Image.asset( |
||||
|
Assets.imagesUpdataIcon, |
||||
|
width: 36.w, |
||||
|
), |
||||
|
), |
||||
|
Positioned( |
||||
|
left: 43.w, |
||||
|
top: 29.w, |
||||
|
child: Image.asset( |
||||
|
Assets.imagesUpdataFont, |
||||
|
width: 76.w, |
||||
|
), |
||||
|
) |
||||
|
], |
||||
|
), |
||||
|
), |
||||
|
); |
||||
|
})); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
@ -1,174 +0,0 @@ |
|||||
// import 'dart:async'; |
|
||||
// import 'package:dating_touchme_app/pages/main/main_page.dart'; |
|
||||
// import 'package:get/get.dart'; |
|
||||
// import 'package:get_storage/get_storage.dart'; |
|
||||
// import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; |
|
||||
// import 'package:dating_touchme_app/network/user_api.dart'; |
|
||||
// import 'package:dating_touchme_app/pages/mine/user_info_page.dart'; |
|
||||
// |
|
||||
// |
|
||||
// class LoginController extends GetxController { |
|
||||
// // 手机号输入 |
|
||||
// final phoneNumber = ''.obs; |
|
||||
// // 验证码输入 |
|
||||
// final verificationCode = ''.obs; |
|
||||
// // 是否正在发送验证码 |
|
||||
// final isSendingCode = false.obs; |
|
||||
// // 倒计时秒数 |
|
||||
// final countdownSeconds = 0.obs; |
|
||||
// // 是否正在登录中 |
|
||||
// final isLoggingIn = false.obs; |
|
||||
// |
|
||||
// // 从GetX依赖注入中获取UserApi实例 |
|
||||
// late UserApi _userApi; |
|
||||
// // GetStorage实例,用于存储token等信息 |
|
||||
// final storage = GetStorage(); |
|
||||
// |
|
||||
// @override |
|
||||
// void onInit() { |
|
||||
// super.onInit(); |
|
||||
// // 从全局依赖中获取UserApi |
|
||||
// _userApi = Get.find<UserApi>(); |
|
||||
// } |
|
||||
// |
|
||||
// // 获取验证码 |
|
||||
// Future<void> getVerificationCode() async { |
|
||||
// // 验证手机号格式 |
|
||||
// if (phoneNumber.value.isEmpty || phoneNumber.value.length != 11) { |
|
||||
// SmartDialog.showToast('请输入正确的手机号'); |
|
||||
// return; |
|
||||
// } |
|
||||
// |
|
||||
// isSendingCode.value = true; |
|
||||
// |
|
||||
// try { |
|
||||
// // 构建请求参数 |
|
||||
// final params = { |
|
||||
// 'purpose': 1, // 认证 |
|
||||
// 'verifiableAccount': phoneNumber.value, |
|
||||
// 'verifiableAccountType': 1, // 手机 |
|
||||
// }; |
|
||||
// |
|
||||
// // 调用UserApi中的验证码接口 |
|
||||
// final response = await _userApi.getVerificationCode(params); |
|
||||
// |
|
||||
// // 处理响应 |
|
||||
// if (response.data.isSuccess) { |
|
||||
// // 生产环境移除打印,可考虑使用正式的日志框架 |
|
||||
// // print('验证码发送成功'); |
|
||||
// // 开始倒计时 |
|
||||
// startCountdown(); |
|
||||
// } else { |
|
||||
// SmartDialog.showToast(response.data.message); |
|
||||
// } |
|
||||
// } catch (e) { |
|
||||
// SmartDialog.showToast('网络请求失败,请重试'); |
|
||||
// } finally { |
|
||||
// isSendingCode.value = false; |
|
||||
// } |
|
||||
// } |
|
||||
// |
|
||||
// // 开始倒计时 |
|
||||
// void startCountdown() { |
|
||||
// countdownSeconds.value = 60; |
|
||||
// Timer.periodic(const Duration(seconds: 1), (timer) { |
|
||||
// countdownSeconds.value--; |
|
||||
// if (countdownSeconds.value <= 0) { |
|
||||
// timer.cancel(); |
|
||||
// } |
|
||||
// }); |
|
||||
// } |
|
||||
// |
|
||||
// // 清除错误信息 - 由于使用SmartDialog,此方法不再需要 |
|
||||
// // void clearErrorMessage() {} |
|
||||
// |
|
||||
// |
|
||||
// // 登录方法 |
|
||||
// Future<void> login() async { |
|
||||
// // 验证输入 |
|
||||
// if (phoneNumber.value.isEmpty || phoneNumber.value.length != 11) { |
|
||||
// SmartDialog.showToast('请输入正确的手机号'); |
|
||||
// return; |
|
||||
// } |
|
||||
// |
|
||||
// if (verificationCode.value.isEmpty) { |
|
||||
// SmartDialog.showToast('请输入验证码'); |
|
||||
// return; |
|
||||
// } |
|
||||
// |
|
||||
// isLoggingIn.value = true; |
|
||||
// |
|
||||
// try { |
|
||||
// // 构建登录请求参数 |
|
||||
// final params = { |
|
||||
// 'account': phoneNumber.value, |
|
||||
// 'accountType': 2, // 手机号类型 |
|
||||
// 'captcha': verificationCode.value, |
|
||||
// }; |
|
||||
// |
|
||||
// // 调用登录接口 |
|
||||
// final response = await _userApi.login(params); |
|
||||
// |
|
||||
// // 处理响应 |
|
||||
// if (response.data.isSuccess) { |
|
||||
// // 保存token和用户信息 |
|
||||
// if (response.data.data != null) { |
|
||||
// final loginData = response.data.data!; |
|
||||
// await storage.write('token', loginData.token); |
|
||||
// await storage.write('userId', loginData.userId); |
|
||||
// // 保存用户信息 |
|
||||
// await storage.write('userInfo', loginData.toJson()); |
|
||||
// |
|
||||
// // 登录成功后获取用户基础信息 |
|
||||
// await _getBaseUserInfo(loginData.userId); |
|
||||
// } |
|
||||
// } else { |
|
||||
// SmartDialog.showToast(response.data.message); |
|
||||
// } |
|
||||
// } catch (e) { |
|
||||
// SmartDialog.showToast('网络请求失败,请检查网络连接'); |
|
||||
// } finally { |
|
||||
// isLoggingIn.value = false; |
|
||||
// } |
|
||||
// } |
|
||||
// |
|
||||
// // 获取用户基础信息 |
|
||||
// Future<void> _getBaseUserInfo(String userId) async { |
|
||||
// try { |
|
||||
// final response = await _userApi.getBaseUserInfo(userId); |
|
||||
// |
|
||||
// if (response.data.isSuccess && response.data.data != null) { |
|
||||
// // 成功获取基础信息后,调用获取婚姻信息详情接口 |
|
||||
// await _getMarriageInformationDetail(); |
|
||||
// } else { |
|
||||
// SmartDialog.showToast(response.data.message); |
|
||||
// } |
|
||||
// } catch (e) { |
|
||||
// // 获取用户信息失败不影响登录流程 |
|
||||
// SmartDialog.showToast('获取用户信息失败'); |
|
||||
// } |
|
||||
// } |
|
||||
// |
|
||||
// // 获取用户婚姻信息详情 |
|
||||
// Future<void> _getMarriageInformationDetail() async { |
|
||||
// try { |
|
||||
// final response = await _userApi.getMarriageInformationDetail(); |
|
||||
// if (response.data.isSuccess) { |
|
||||
// // 检查data是否为null或者是空对象 |
|
||||
// if(response.data.data == null){ |
|
||||
// //跳转到完善信息 |
|
||||
// SmartDialog.showToast('转到完善信息'); |
|
||||
// // 导航到完善信息页面 |
|
||||
// Get.offAll(() => UserInfoPage()); |
|
||||
// }else{ |
|
||||
// Get.offAll(MainPage()); |
|
||||
// } |
|
||||
// } else { |
|
||||
// // 获取婚姻信息失败不影响登录流程 |
|
||||
// } |
|
||||
// } catch (e) { |
|
||||
// // 获取婚姻信息失败不影响登录流程 |
|
||||
// print('获取婚姻信息异常: $e'); |
|
||||
// } |
|
||||
// } |
|
||||
// } |
|
||||
@ -1,410 +0,0 @@ |
|||||
import 'package:dating_touchme_app/components/page_appbar.dart'; |
|
||||
import 'package:dating_touchme_app/extension/ex_widget.dart'; |
|
||||
import 'package:dating_touchme_app/generated/assets.dart'; |
|
||||
import 'package:dating_touchme_app/pages/mine/blacklist_page.dart'; |
|
||||
import 'package:flutter/material.dart'; |
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
||||
import 'package:get/get.dart'; |
|
||||
import 'package:get/get_core/src/get_main.dart'; |
|
||||
import 'package:tdesign_flutter/tdesign_flutter.dart'; |
|
||||
|
|
||||
class SettingPage extends StatefulWidget { |
|
||||
const SettingPage({super.key}); |
|
||||
|
|
||||
@override |
|
||||
State<SettingPage> createState() => _SettingPageState(); |
|
||||
} |
|
||||
|
|
||||
class _SettingPageState extends State<SettingPage> { |
|
||||
|
|
||||
|
|
||||
bool blockUser = false; |
|
||||
|
|
||||
@override |
|
||||
Widget build(BuildContext context) { |
|
||||
return Scaffold( |
|
||||
backgroundColor: const Color.fromRGBO(250, 250, 250, 1), |
|
||||
appBar: PageAppbar(title: "设置"), |
|
||||
body: SingleChildScrollView( |
|
||||
child: Container( |
|
||||
padding: EdgeInsets.symmetric( |
|
||||
vertical: 15.w, |
|
||||
horizontal: 10.w |
|
||||
), |
|
||||
child: Column( |
|
||||
children: [ |
|
||||
BlockItem( |
|
||||
children: [ |
|
||||
Item( |
|
||||
label: "后台播放", |
|
||||
child: TDSwitch( |
|
||||
isOn: blockUser, |
|
||||
trackOnColor: const Color.fromRGBO(117, 98, 249, 1), |
|
||||
onChanged: (bool e){ |
|
||||
print(e); |
|
||||
blockUser = e; |
|
||||
setState(() { |
|
||||
|
|
||||
}); |
|
||||
return e; |
|
||||
}, |
|
||||
), |
|
||||
), |
|
||||
LineItem(), |
|
||||
Item( |
|
||||
label: "语音/视频通话提示音", |
|
||||
child: TDSwitch( |
|
||||
isOn: blockUser, |
|
||||
trackOnColor: const Color.fromRGBO(117, 98, 249, 1), |
|
||||
onChanged: (bool e){ |
|
||||
print(e); |
|
||||
blockUser = e; |
|
||||
setState(() { |
|
||||
|
|
||||
}); |
|
||||
return e; |
|
||||
}, |
|
||||
), |
|
||||
), |
|
||||
], |
|
||||
), |
|
||||
BlockItem( |
|
||||
children: [ |
|
||||
Item( |
|
||||
label: "安全中心", |
|
||||
child: Icon( |
|
||||
Icons.keyboard_arrow_right, |
|
||||
size: 10.w, |
|
||||
color: const Color.fromRGBO(191, 191, 191, 1), |
|
||||
), |
|
||||
), |
|
||||
LineItem(), |
|
||||
Item( |
|
||||
label: "黑名单", |
|
||||
child: Icon( |
|
||||
Icons.keyboard_arrow_right, |
|
||||
size: 10.w, |
|
||||
color: const Color.fromRGBO(191, 191, 191, 1), |
|
||||
), |
|
||||
).onTap((){ |
|
||||
Get.to(() => BlacklistPage()); |
|
||||
}), |
|
||||
], |
|
||||
), |
|
||||
BlockItem( |
|
||||
children: [ |
|
||||
Item( |
|
||||
label: "隐私设置", |
|
||||
child: Icon( |
|
||||
Icons.keyboard_arrow_right, |
|
||||
size: 10.w, |
|
||||
color: const Color.fromRGBO(191, 191, 191, 1), |
|
||||
), |
|
||||
), |
|
||||
LineItem(), |
|
||||
Item( |
|
||||
label: "青少年模式", |
|
||||
child: Icon( |
|
||||
Icons.keyboard_arrow_right, |
|
||||
size: 10.w, |
|
||||
color: const Color.fromRGBO(191, 191, 191, 1), |
|
||||
), |
|
||||
), |
|
||||
], |
|
||||
), |
|
||||
BlockItem( |
|
||||
children: [ |
|
||||
Item( |
|
||||
label: "系统权限管理", |
|
||||
child: Icon( |
|
||||
Icons.keyboard_arrow_right, |
|
||||
size: 10.w, |
|
||||
color: const Color.fromRGBO(191, 191, 191, 1), |
|
||||
), |
|
||||
), |
|
||||
LineItem(), |
|
||||
Item( |
|
||||
label: "消息通知", |
|
||||
child: Icon( |
|
||||
Icons.keyboard_arrow_right, |
|
||||
size: 10.w, |
|
||||
color: const Color.fromRGBO(191, 191, 191, 1), |
|
||||
), |
|
||||
), |
|
||||
LineItem(), |
|
||||
Item( |
|
||||
label: "检查更新", |
|
||||
child: Row( |
|
||||
children: [ |
|
||||
Text( |
|
||||
"版本号 1.0.000", |
|
||||
style: TextStyle( |
|
||||
fontSize: 13.w, |
|
||||
color: const Color.fromRGBO(117, 98, 249, 1) |
|
||||
), |
|
||||
), |
|
||||
SizedBox(width: 10.w,), |
|
||||
Icon( |
|
||||
Icons.keyboard_arrow_right, |
|
||||
size: 10.w, |
|
||||
color: const Color.fromRGBO(191, 191, 191, 1), |
|
||||
) |
|
||||
], |
|
||||
), |
|
||||
).onTap((){ |
|
||||
Navigator.of(context).push(TDSlidePopupRoute( |
|
||||
modalBarrierColor: TDTheme.of(context).fontGyColor2, |
|
||||
slideTransitionFrom: SlideTransitionFrom.center, |
|
||||
builder: (context) { |
|
||||
return Material( |
|
||||
color: Colors.transparent, |
|
||||
child: Container( |
|
||||
color: Colors.transparent, |
|
||||
width: 299.w, |
|
||||
padding: EdgeInsets.only( |
|
||||
top: 56.w |
|
||||
), |
|
||||
child: Stack( |
|
||||
clipBehavior: Clip.none, |
|
||||
children: [ |
|
||||
Container( |
|
||||
width: 299.w, |
|
||||
padding: EdgeInsets.only( |
|
||||
top: 147.w, |
|
||||
left: 30.w, |
|
||||
right: 30.w, |
|
||||
bottom: 25.w |
|
||||
), |
|
||||
decoration: BoxDecoration( |
|
||||
borderRadius: BorderRadius.all(Radius.circular(18.w)), |
|
||||
color: Colors.white |
|
||||
), |
|
||||
child: Column( |
|
||||
crossAxisAlignment: CrossAxisAlignment.start, |
|
||||
mainAxisSize: MainAxisSize.min, |
|
||||
children: [ |
|
||||
Text( |
|
||||
"体验全新升级v1.2.0", |
|
||||
style: TextStyle( |
|
||||
fontSize: 16.w, |
|
||||
fontWeight: FontWeight.w500 |
|
||||
), |
|
||||
), |
|
||||
SizedBox(height: 14.w,), |
|
||||
Row( |
|
||||
crossAxisAlignment: CrossAxisAlignment.start, |
|
||||
children: [ |
|
||||
Container( |
|
||||
width: 2.w, |
|
||||
height: 5.w, |
|
||||
margin: EdgeInsets.only( |
|
||||
right: 10.w, |
|
||||
top: 6.w |
|
||||
), |
|
||||
decoration: BoxDecoration( |
|
||||
borderRadius: BorderRadius.all(Radius.circular(2.w)), |
|
||||
color: const Color.fromRGBO(51, 51, 51, 1) |
|
||||
), |
|
||||
), |
|
||||
SizedBox( |
|
||||
width: 204.w, |
|
||||
child: Text( |
|
||||
"首页风格改版,更全面的内容,恍然一新的视觉用户体验。", |
|
||||
style: TextStyle( |
|
||||
fontSize: 12.w, |
|
||||
), |
|
||||
), |
|
||||
) |
|
||||
], |
|
||||
), |
|
||||
SizedBox(height: 8.w,), |
|
||||
Row( |
|
||||
crossAxisAlignment: CrossAxisAlignment.start, |
|
||||
children: [ |
|
||||
Container( |
|
||||
width: 2.w, |
|
||||
height: 5.w, |
|
||||
margin: EdgeInsets.only( |
|
||||
right: 10.w, |
|
||||
top: 6.w |
|
||||
), |
|
||||
decoration: BoxDecoration( |
|
||||
borderRadius: BorderRadius.all(Radius.circular(2.w)), |
|
||||
color: const Color.fromRGBO(51, 51, 51, 1) |
|
||||
), |
|
||||
), |
|
||||
SizedBox( |
|
||||
width: 204.w, |
|
||||
child: Text( |
|
||||
"优化了动画细节,让产品更流畅。", |
|
||||
style: TextStyle( |
|
||||
fontSize: 12.w, |
|
||||
), |
|
||||
), |
|
||||
) |
|
||||
], |
|
||||
), |
|
||||
SizedBox(height: 32.w,), |
|
||||
Row( |
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|
||||
children: [ |
|
||||
Container( |
|
||||
width: 113.w, |
|
||||
height: 40.w, |
|
||||
decoration: BoxDecoration( |
|
||||
borderRadius: BorderRadius.all(Radius.circular(9.w)), |
|
||||
color: const Color.fromRGBO(245, 245, 245, 1) |
|
||||
), |
|
||||
child: Center( |
|
||||
child: Text( |
|
||||
"暂不更新", |
|
||||
style: TextStyle( |
|
||||
fontSize: 15.w, |
|
||||
color: const Color.fromRGBO(144, 144, 144, 1) |
|
||||
), |
|
||||
), |
|
||||
), |
|
||||
), |
|
||||
Container( |
|
||||
width: 113.w, |
|
||||
height: 40.w, |
|
||||
decoration: BoxDecoration( |
|
||||
borderRadius: BorderRadius.all(Radius.circular(9.w)), |
|
||||
color: const Color.fromRGBO(245, 245, 245, 1), |
|
||||
gradient: const LinearGradient( |
|
||||
begin: Alignment.centerLeft, |
|
||||
end: Alignment.centerRight, // 对应 CSS 90deg |
|
||||
colors: [ |
|
||||
Color.fromRGBO(131, 89, 255, 1), // rgba(131, 89, 255, 1) |
|
||||
Color.fromRGBO(61, 138, 224, 1), // rgba(61, 138, 224, 1) |
|
||||
], |
|
||||
), |
|
||||
), |
|
||||
child: Center( |
|
||||
child: Text( |
|
||||
"立即升级", |
|
||||
style: TextStyle( |
|
||||
fontSize: 15.w, |
|
||||
fontWeight: FontWeight.w500, |
|
||||
color: Colors.white |
|
||||
), |
|
||||
), |
|
||||
), |
|
||||
), |
|
||||
], |
|
||||
) |
|
||||
], |
|
||||
), |
|
||||
), |
|
||||
Positioned( |
|
||||
left: 0, |
|
||||
top: -56.w, |
|
||||
child: Image.asset( |
|
||||
Assets.imagesUpdataBg, |
|
||||
width: 299.w, |
|
||||
), |
|
||||
), |
|
||||
Positioned( |
|
||||
left: 11.w, |
|
||||
top: -14.w, |
|
||||
child: Image.asset( |
|
||||
Assets.imagesUpdataIcon, |
|
||||
width: 36.w, |
|
||||
), |
|
||||
), |
|
||||
Positioned( |
|
||||
left: 43.w, |
|
||||
top: 29.w, |
|
||||
child: Image.asset( |
|
||||
Assets.imagesUpdataFont, |
|
||||
width: 76.w, |
|
||||
), |
|
||||
) |
|
||||
], |
|
||||
), |
|
||||
), |
|
||||
); |
|
||||
})); |
|
||||
}), |
|
||||
], |
|
||||
), |
|
||||
], |
|
||||
), |
|
||||
), |
|
||||
), |
|
||||
); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
class BlockItem extends StatefulWidget { |
|
||||
final List<Widget> children; |
|
||||
const BlockItem({super.key, required this.children}); |
|
||||
|
|
||||
@override |
|
||||
State<BlockItem> createState() => _BlockItemState(); |
|
||||
} |
|
||||
|
|
||||
class _BlockItemState extends State<BlockItem> { |
|
||||
@override |
|
||||
Widget build(BuildContext context) { |
|
||||
return Container( |
|
||||
padding: EdgeInsets.symmetric( |
|
||||
horizontal: 14.w |
|
||||
), |
|
||||
margin: EdgeInsets.only( |
|
||||
bottom: 10.w |
|
||||
), |
|
||||
decoration: BoxDecoration( |
|
||||
borderRadius: BorderRadius.all(Radius.circular(9.w)), |
|
||||
color: Colors.white |
|
||||
), |
|
||||
child: Column( |
|
||||
children: widget.children, |
|
||||
), |
|
||||
); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
class Item extends StatefulWidget { |
|
||||
final String label; |
|
||||
final Widget child; |
|
||||
const Item({super.key, required this.label, required this.child}); |
|
||||
|
|
||||
@override |
|
||||
State<Item> createState() => _ItemState(); |
|
||||
} |
|
||||
|
|
||||
class _ItemState extends State<Item> { |
|
||||
@override |
|
||||
Widget build(BuildContext context) { |
|
||||
return SizedBox( |
|
||||
height: 54.w, |
|
||||
child: Row( |
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|
||||
children: [ |
|
||||
Text( |
|
||||
widget.label, |
|
||||
style: TextStyle( |
|
||||
fontSize: 13.w, |
|
||||
fontWeight: FontWeight.w500 |
|
||||
), |
|
||||
), |
|
||||
widget.child |
|
||||
], |
|
||||
), |
|
||||
); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
class LineItem extends StatelessWidget { |
|
||||
const LineItem({super.key}); |
|
||||
|
|
||||
@override |
|
||||
Widget build(BuildContext context) { |
|
||||
return Container( |
|
||||
width: 320.w, |
|
||||
height: 2.w, |
|
||||
color: const Color.fromRGBO(245, 245, 245, 1), |
|
||||
); |
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,77 @@ |
|||||
|
import 'package:flutter/material.dart'; |
||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
||||
|
import 'package:get/get.dart'; |
||||
|
import 'package:tdesign_flutter/tdesign_flutter.dart'; |
||||
|
|
||||
|
import '../../components/page_appbar.dart'; |
||||
|
import '../../controller/setting/notification_controller.dart'; |
||||
|
|
||||
|
class NoticePage extends StatelessWidget { |
||||
|
NoticePage({super.key}); |
||||
|
|
||||
|
final NotificationController controller = Get.put(NotificationController()); |
||||
|
|
||||
|
@override |
||||
|
Widget build(BuildContext context) { |
||||
|
return Scaffold( |
||||
|
backgroundColor: Color(0xffF5F5F5), |
||||
|
appBar: PageAppbar(title: "消息通知"), |
||||
|
body: Expanded( |
||||
|
child: SingleChildScrollView( |
||||
|
padding: EdgeInsetsGeometry.symmetric(vertical: 16.w), |
||||
|
child: Obx(() { |
||||
|
return Column( |
||||
|
children: [ |
||||
|
TDCellGroup( |
||||
|
theme: TDCellGroupTheme.cardTheme, |
||||
|
cells: [ |
||||
|
TDCell( |
||||
|
arrow: true, |
||||
|
title: '接受推送通知', |
||||
|
description: controller.getPermissionStatusText(), |
||||
|
onClick: (cell){ |
||||
|
controller.openSettings(); |
||||
|
}, |
||||
|
), |
||||
|
TDCell( |
||||
|
arrow: false, |
||||
|
title: '接受推送通知', |
||||
|
description: '一段很长很长的内容文字', |
||||
|
rightIconWidget: TDSwitch( |
||||
|
isOn: false, |
||||
|
trackOnColor: const Color.fromRGBO(117, 98, 249, 1), |
||||
|
onChanged: (bool e){ |
||||
|
return false; |
||||
|
}, |
||||
|
) |
||||
|
), |
||||
|
], |
||||
|
), |
||||
|
const SizedBox(height: 12), |
||||
|
TDCellGroup( |
||||
|
theme: TDCellGroupTheme.cardTheme, |
||||
|
cells: [ |
||||
|
TDCell( |
||||
|
arrow: false, |
||||
|
title: '后台播放', |
||||
|
description: '一段很长很长的内容文字', |
||||
|
rightIconWidget: TDSwitch( |
||||
|
isOn: true, |
||||
|
trackOnColor: const Color.fromRGBO(117, 98, 249, 1), |
||||
|
onChanged: (bool e){ |
||||
|
return false; |
||||
|
}, |
||||
|
) |
||||
|
), |
||||
|
], |
||||
|
), |
||||
|
], |
||||
|
); |
||||
|
}), |
||||
|
), |
||||
|
), |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
@ -0,0 +1,153 @@ |
|||||
|
import 'package:dating_touchme_app/pages/mine/login_page.dart'; |
||||
|
import 'package:flutter/material.dart'; |
||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
||||
|
import 'package:get/get.dart'; |
||||
|
import 'package:tdesign_flutter/tdesign_flutter.dart'; |
||||
|
|
||||
|
import '../../components/page_appbar.dart'; |
||||
|
import '../../controller/setting/setting_controller.dart'; |
||||
|
import 'blacklist_page.dart'; |
||||
|
import 'notice_page.dart'; |
||||
|
|
||||
|
class SettingPage extends StatelessWidget { |
||||
|
|
||||
|
SettingPage({super.key}); |
||||
|
final SettingController controller = Get.put(SettingController()); |
||||
|
|
||||
|
@override |
||||
|
Widget build(BuildContext context) { |
||||
|
return Scaffold( |
||||
|
backgroundColor: Color(0xffF5F5F5), |
||||
|
appBar: PageAppbar(title: "设置"), |
||||
|
body: Expanded( |
||||
|
child: SingleChildScrollView( |
||||
|
padding: EdgeInsetsGeometry.symmetric(vertical: 16.w), |
||||
|
child: Obx(() { |
||||
|
return Column( |
||||
|
children: [ |
||||
|
TDCellGroup( |
||||
|
theme: TDCellGroupTheme.cardTheme, |
||||
|
cells: [ |
||||
|
TDCell( |
||||
|
arrow: false, |
||||
|
title: '允许中间邀请弹窗', |
||||
|
rightIconWidget: TDSwitch(isOn: false,trackOnColor: const Color.fromRGBO(117, 98, 249, 1),onChanged: (bool e) { |
||||
|
return false; |
||||
|
}) |
||||
|
), |
||||
|
TDCell( |
||||
|
arrow: false, |
||||
|
title: '后台播放', |
||||
|
rightIconWidget: TDSwitch( |
||||
|
isOn: true, |
||||
|
trackOnColor: const Color.fromRGBO(117, 98, 249, 1), |
||||
|
onChanged: (bool e) { |
||||
|
return false; |
||||
|
}, |
||||
|
) |
||||
|
), |
||||
|
TDCell( |
||||
|
arrow: false, |
||||
|
title: '语音/视频通话提示音', |
||||
|
rightIconWidget: TDSwitch(isOn: false,trackOnColor: const Color.fromRGBO(117, 98, 249, 1),onChanged: (bool e) { |
||||
|
|
||||
|
return false; |
||||
|
}) |
||||
|
), |
||||
|
], |
||||
|
), |
||||
|
const SizedBox(height: 12), |
||||
|
TDCellGroup( |
||||
|
theme: TDCellGroupTheme.cardTheme, |
||||
|
cells: [ |
||||
|
TDCell(arrow: true, title: '安全中心', onClick: (cell) { |
||||
|
print('安全中心'); |
||||
|
}), |
||||
|
TDCell(arrow: true, title: '黑名单', onClick: (cell) { |
||||
|
Get.to(() => BlacklistPage()); |
||||
|
}), |
||||
|
], |
||||
|
), |
||||
|
const SizedBox(height: 12), |
||||
|
TDCellGroup( |
||||
|
theme: TDCellGroupTheme.cardTheme, |
||||
|
cells: [ |
||||
|
TDCell(arrow: true, title: '系统权限管理'), |
||||
|
TDCell(arrow: true, title: '消息通知', onClick: (cell) { |
||||
|
Get.to(() => NoticePage()); |
||||
|
}), |
||||
|
TDCell(arrow: true, title: '检查更新', onClick: (cell) { |
||||
|
// _showUpdateDialog(); |
||||
|
controller.checkVersion(); |
||||
|
}, |
||||
|
noteWidget: Text('当前版本:${controller.version.value}',style: TextStyle(fontSize: 13.w,color: const Color.fromRGBO(117, 98, 249, 1))), |
||||
|
) |
||||
|
], |
||||
|
), |
||||
|
const SizedBox(height: 64), |
||||
|
TDButton( |
||||
|
text: '退出登录', |
||||
|
width: MediaQuery.of(context).size.width - 40, |
||||
|
size: TDButtonSize.large, |
||||
|
type: TDButtonType.fill, |
||||
|
shape: TDButtonShape.round, |
||||
|
theme: TDButtonTheme.danger, |
||||
|
onTap: () { |
||||
|
showGeneralDialog( |
||||
|
context: context, |
||||
|
pageBuilder: (BuildContext buildContext, Animation< |
||||
|
double> animation, |
||||
|
Animation<double> secondaryAnimation) { |
||||
|
return TDAlertDialog( |
||||
|
title: '是否退出当前账号?', |
||||
|
buttonWidget: Container( |
||||
|
padding: EdgeInsetsGeometry.only(top: 16.w, |
||||
|
right: 30.w, |
||||
|
left: 30.w, |
||||
|
bottom: 32.w), |
||||
|
child: Row( |
||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
||||
|
children: [ |
||||
|
TDButton( |
||||
|
text: '取 消', |
||||
|
width: 120, |
||||
|
size: TDButtonSize.large, |
||||
|
type: TDButtonType.fill, |
||||
|
shape: TDButtonShape.round, |
||||
|
theme: TDButtonTheme.defaultTheme, |
||||
|
onTap: () { |
||||
|
Navigator.of(context).pop(); |
||||
|
}, |
||||
|
), |
||||
|
TDButton( |
||||
|
text: '确 定', |
||||
|
width: 120, |
||||
|
size: TDButtonSize.large, |
||||
|
type: TDButtonType.fill, |
||||
|
shape: TDButtonShape.round, |
||||
|
theme: TDButtonTheme.danger, |
||||
|
onTap: () { |
||||
|
controller.logout(); |
||||
|
Navigator.of(context).pop(); |
||||
|
Get.offAll(() => LoginPage()); |
||||
|
}, |
||||
|
), |
||||
|
], |
||||
|
), |
||||
|
) |
||||
|
); |
||||
|
}, |
||||
|
); |
||||
|
}, |
||||
|
), |
||||
|
const SizedBox(height: 24), |
||||
|
], |
||||
|
); |
||||
|
}), |
||||
|
), |
||||
|
), |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
484
pubspec.lock
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save