diff --git a/.flutter-plugins b/.flutter-plugins index f3be0a7d55dc28a10f200dffc0dd70a2843687e5..5eadbfecd1d5329ff441f5c442546c5cd6ad2389 100644 --- a/.flutter-plugins +++ b/.flutter-plugins @@ -1,4 +1,5 @@ # This is a generated file; do not edit or check into version control. +android_intent_plus=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\android_intent_plus-5.0.2\\ file_picker=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\file_picker-8.0.0+1\\ file_preview=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\file_preview-1.2.0\\ file_selector_linux=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\file_selector_linux-0.9.2+1\\ @@ -21,3 +22,13 @@ shared_preferences_foundation=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\h shared_preferences_linux=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\shared_preferences_linux-2.3.2\\ shared_preferences_web=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\shared_preferences_web-2.2.2\\ shared_preferences_windows=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\shared_preferences_windows-2.3.2\\ +url_launcher=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\url_launcher-6.2.6\\ +url_launcher_android=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\url_launcher_android-6.3.1\\ +url_launcher_ios=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\url_launcher_ios-6.3.0\\ +url_launcher_linux=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\url_launcher_linux-3.1.1\\ +url_launcher_macos=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\url_launcher_macos-3.2.0\\ +url_launcher_web=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\url_launcher_web-2.2.3\\ +url_launcher_windows=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\url_launcher_windows-3.1.1\\ +webview_flutter=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\webview_flutter-4.7.0\\ +webview_flutter_android=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\webview_flutter_android-3.16.1\\ +webview_flutter_wkwebview=C:\\Users\\SunShibo\\AppData\\Local\\Pub\\Cache\\hosted\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\webview_flutter_wkwebview-3.13.0\\ diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies index be2bee98c8bb5cd2598f4480010265412460144c..77fe1d22d93f2c816754478dc7b0e74cf3831276 100644 --- a/.flutter-plugins-dependencies +++ b/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"file_picker","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_picker-8.0.0+1\\\\","native_build":true,"dependencies":[]},{"name":"file_preview","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_preview-1.2.0\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_ios","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_ios-0.8.9+1\\\\","native_build":true,"dependencies":[]},{"name":"isar_flutter_libs","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\isar_flutter_libs-3.1.0+1\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_foundation-2.3.5\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"android":[{"name":"file_picker","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_picker-8.0.0+1\\\\","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"file_preview","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_preview-1.2.0\\\\","native_build":true,"dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\flutter_plugin_android_lifecycle-2.0.19\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_android-0.8.9+6\\\\","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"isar_flutter_libs","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\isar_flutter_libs-3.1.0+1\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_android-2.2.2\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"file_selector_macos","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_selector_macos-0.9.3+3\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_macos","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_macos-0.2.1+1\\\\","native_build":false,"dependencies":["file_selector_macos"]},{"name":"isar_flutter_libs","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\isar_flutter_libs-3.1.0+1\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_foundation-2.3.5\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]}],"linux":[{"name":"file_selector_linux","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_selector_linux-0.9.2+1\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_linux","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_linux-0.2.1+1\\\\","native_build":false,"dependencies":["file_selector_linux"]},{"name":"isar_flutter_libs","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\isar_flutter_libs-3.1.0+1\\\\","native_build":true,"dependencies":[]},{"name":"path_provider_linux","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\path_provider_linux-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_linux-2.3.2\\\\","native_build":false,"dependencies":["path_provider_linux"]}],"windows":[{"name":"file_selector_windows","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_selector_windows-0.9.3+1\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_windows","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_windows-0.2.1+1\\\\","native_build":false,"dependencies":["file_selector_windows"]},{"name":"isar_flutter_libs","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\isar_flutter_libs-3.1.0+1\\\\","native_build":true,"dependencies":[]},{"name":"path_provider_windows","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\path_provider_windows-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_windows","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_windows-2.3.2\\\\","native_build":false,"dependencies":["path_provider_windows"]}],"web":[{"name":"file_picker","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_picker-8.0.0+1\\\\","dependencies":[]},{"name":"image_picker_for_web","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_for_web-3.0.2\\\\","dependencies":[]},{"name":"shared_preferences_web","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_web-2.2.2\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"file_preview","dependencies":[]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]},{"name":"isar_flutter_libs","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]}],"date_created":"2024-05-05 16:51:52.821415","version":"3.22.0-14.0.pre.62","swift_package_manager_enabled":false} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"file_picker","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_picker-8.0.0+1\\\\","native_build":true,"dependencies":[]},{"name":"file_preview","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_preview-1.2.0\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_ios","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_ios-0.8.9+1\\\\","native_build":true,"dependencies":[]},{"name":"isar_flutter_libs","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\isar_flutter_libs-3.1.0+1\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_foundation-2.3.5\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_ios","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\url_launcher_ios-6.3.0\\\\","native_build":true,"dependencies":[]},{"name":"webview_flutter_wkwebview","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\webview_flutter_wkwebview-3.13.0\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"android_intent_plus","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\android_intent_plus-5.0.2\\\\","native_build":true,"dependencies":[]},{"name":"file_picker","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_picker-8.0.0+1\\\\","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"file_preview","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_preview-1.2.0\\\\","native_build":true,"dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\flutter_plugin_android_lifecycle-2.0.19\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_android-0.8.9+6\\\\","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"isar_flutter_libs","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\isar_flutter_libs-3.1.0+1\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_android-2.2.2\\\\","native_build":true,"dependencies":[]},{"name":"url_launcher_android","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\url_launcher_android-6.3.1\\\\","native_build":true,"dependencies":[]},{"name":"webview_flutter_android","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\webview_flutter_android-3.16.1\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"file_selector_macos","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_selector_macos-0.9.3+3\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_macos","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_macos-0.2.1+1\\\\","native_build":false,"dependencies":["file_selector_macos"]},{"name":"isar_flutter_libs","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\isar_flutter_libs-3.1.0+1\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_foundation-2.3.5\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_macos","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\url_launcher_macos-3.2.0\\\\","native_build":true,"dependencies":[]}],"linux":[{"name":"file_selector_linux","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_selector_linux-0.9.2+1\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_linux","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_linux-0.2.1+1\\\\","native_build":false,"dependencies":["file_selector_linux"]},{"name":"isar_flutter_libs","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\isar_flutter_libs-3.1.0+1\\\\","native_build":true,"dependencies":[]},{"name":"path_provider_linux","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\path_provider_linux-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_linux-2.3.2\\\\","native_build":false,"dependencies":["path_provider_linux"]},{"name":"url_launcher_linux","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\url_launcher_linux-3.1.1\\\\","native_build":true,"dependencies":[]}],"windows":[{"name":"file_selector_windows","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_selector_windows-0.9.3+1\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_windows","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_windows-0.2.1+1\\\\","native_build":false,"dependencies":["file_selector_windows"]},{"name":"isar_flutter_libs","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\isar_flutter_libs-3.1.0+1\\\\","native_build":true,"dependencies":[]},{"name":"path_provider_windows","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\path_provider_windows-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_windows","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_windows-2.3.2\\\\","native_build":false,"dependencies":["path_provider_windows"]},{"name":"url_launcher_windows","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\url_launcher_windows-3.1.1\\\\","native_build":true,"dependencies":[]}],"web":[{"name":"file_picker","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\file_picker-8.0.0+1\\\\","dependencies":[]},{"name":"image_picker_for_web","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\image_picker_for_web-3.0.2\\\\","dependencies":[]},{"name":"shared_preferences_web","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\shared_preferences_web-2.2.2\\\\","dependencies":[]},{"name":"url_launcher_web","path":"C:\\\\Users\\\\SunShibo\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\mirrors.tuna.tsinghua.edu.cn%47dart-pub%47\\\\url_launcher_web-2.2.3\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"android_intent_plus","dependencies":[]},{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"file_preview","dependencies":[]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]},{"name":"isar_flutter_libs","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]},{"name":"webview_flutter","dependencies":["webview_flutter_android","webview_flutter_wkwebview"]},{"name":"webview_flutter_android","dependencies":[]},{"name":"webview_flutter_wkwebview","dependencies":[]}],"date_created":"2024-05-20 10:08:47.927238","version":"3.22.0-14.0.pre.62","swift_package_manager_enabled":false} \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index a601094874c46f8f9a18ffdf2ce057266eb41064..81968b017954c0ca0b644eb20e341f8edbc3fb79 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -10,6 +10,8 @@ + + _expireTime) { - String? refreshToken = getSpData(SPFlag.refreshToken); - MyHttpClient.getRefreshByToken(refreshToken!).then((value) { - if (value.code == 200) { - saveSpData(SPFlag.expiresIn, value.data!.expiresIn!); - saveSpData(SPFlag.accessToken, value.data!.accessToken!); - return value.data!.accessToken; - } - }); + String? refreshToken = getSpData(SPFlag.refreshToken); + MyHttpClient.getRefreshByToken(refreshToken!).then((value) { + if (value.code == 200) { + saveSpData(SPFlag.expiresIn, value.data!.expiresIn!); + saveSpData(SPFlag.accessToken, value.data!.accessToken!); + return value.data!.accessToken; + } + }); // } return _accessToken; } diff --git a/lib/data/network/entity/manage/people/CompanyMemberDetailResponse.dart b/lib/data/network/entity/manage/people/CompanyMemberDetailResponse.dart index a4df8a452db5470c8a2fcf1716eb1e4d686edd5f..97ba17db3a02a7112c75f650d6e37a44a2e4908f 100644 --- a/lib/data/network/entity/manage/people/CompanyMemberDetailResponse.dart +++ b/lib/data/network/entity/manage/people/CompanyMemberDetailResponse.dart @@ -1,17 +1,16 @@ /// code : 200 /// msg : "ok" -/// data : {"id":1764677020037554177,"jobNumber":null,"userId":1763201736960532482,"createTime":"2024-03-24T18:08:05","roleId":0,"avatar":"https://oss.sshine.ltd/tracking/public/20240407/a988416c0a0042549e61e9e6b2e9620e-scaled_IMG_20240407_113104.jpg","nickName":"rrrr"} +/// data : {"id":1764677020037554177,"jobNumber":"66","userId":1763201736960532482,"createTime":"2024-03-24T18:08:05","roleId":0,"avatar":"https://oss.sshine.ltd/tracking/public/20240517/e79b3811b8f84e169b121ff03cbc2227-scaled_1000076595.jpg","nickName":"rrrr","attProjectNum":12,"chargeTaskNum":0,"deviceNum":0} class CompanyMemberDetailResponse { CompanyMemberDetailResponse({ - num? code, - String? msg, - Data? data, - }) { + num? code, + String? msg, + Data? data,}){ _code = code; _msg = msg; _data = data; - } +} CompanyMemberDetailResponse.fromJson(dynamic json) { _code = json['code']; @@ -21,16 +20,13 @@ class CompanyMemberDetailResponse { num? _code; String? _msg; Data? _data; - CompanyMemberDetailResponse copyWith({ - num? code, - String? msg, - Data? data, - }) => - CompanyMemberDetailResponse( - code: code ?? _code, - msg: msg ?? _msg, - data: data ?? _data, - ); +CompanyMemberDetailResponse copyWith({ num? code, + String? msg, + Data? data, +}) => CompanyMemberDetailResponse( code: code ?? _code, + msg: msg ?? _msg, + data: data ?? _data, +); num? get code => _code; String? get msg => _msg; Data? get data => _data; @@ -44,26 +40,32 @@ class CompanyMemberDetailResponse { } return map; } + } /// id : 1764677020037554177 -/// jobNumber : null +/// jobNumber : "66" /// userId : 1763201736960532482 /// createTime : "2024-03-24T18:08:05" /// roleId : 0 -/// avatar : "https://oss.sshine.ltd/tracking/public/20240407/a988416c0a0042549e61e9e6b2e9620e-scaled_IMG_20240407_113104.jpg" +/// avatar : "https://oss.sshine.ltd/tracking/public/20240517/e79b3811b8f84e169b121ff03cbc2227-scaled_1000076595.jpg" /// nickName : "rrrr" +/// attProjectNum : 12 +/// chargeTaskNum : 0 +/// deviceNum : 0 class Data { Data({ - num? id, - dynamic jobNumber, - num? userId, - String? createTime, - num? roleId, - String? avatar, - String? nickName, - }) { + num? id, + String? jobNumber, + num? userId, + String? createTime, + num? roleId, + String? avatar, + String? nickName, + num? attProjectNum, + num? chargeTaskNum, + num? deviceNum,}){ _id = id; _jobNumber = jobNumber; _userId = userId; @@ -71,7 +73,10 @@ class Data { _roleId = roleId; _avatar = avatar; _nickName = nickName; - } + _attProjectNum = attProjectNum; + _chargeTaskNum = chargeTaskNum; + _deviceNum = deviceNum; +} Data.fromJson(dynamic json) { _id = json['id']; @@ -81,39 +86,51 @@ class Data { _roleId = json['roleId']; _avatar = json['avatar']; _nickName = json['nickName']; + _attProjectNum = json['attProjectNum']; + _chargeTaskNum = json['chargeTaskNum']; + _deviceNum = json['deviceNum']; } num? _id; - dynamic _jobNumber; + String? _jobNumber; num? _userId; String? _createTime; num? _roleId; String? _avatar; String? _nickName; - Data copyWith({ - num? id, - dynamic jobNumber, - num? userId, - String? createTime, - num? roleId, - String? avatar, - String? nickName, - }) => - Data( - id: id ?? _id, - jobNumber: jobNumber ?? _jobNumber, - userId: userId ?? _userId, - createTime: createTime ?? _createTime, - roleId: roleId ?? _roleId, - avatar: avatar ?? _avatar, - nickName: nickName ?? _nickName, - ); + num? _attProjectNum; + num? _chargeTaskNum; + num? _deviceNum; +Data copyWith({ num? id, + String? jobNumber, + num? userId, + String? createTime, + num? roleId, + String? avatar, + String? nickName, + num? attProjectNum, + num? chargeTaskNum, + num? deviceNum, +}) => Data( id: id ?? _id, + jobNumber: jobNumber ?? _jobNumber, + userId: userId ?? _userId, + createTime: createTime ?? _createTime, + roleId: roleId ?? _roleId, + avatar: avatar ?? _avatar, + nickName: nickName ?? _nickName, + attProjectNum: attProjectNum ?? _attProjectNum, + chargeTaskNum: chargeTaskNum ?? _chargeTaskNum, + deviceNum: deviceNum ?? _deviceNum, +); num? get id => _id; - dynamic get jobNumber => _jobNumber; + String? get jobNumber => _jobNumber; num? get userId => _userId; String? get createTime => _createTime; num? get roleId => _roleId; String? get avatar => _avatar; String? get nickName => _nickName; + num? get attProjectNum => _attProjectNum; + num? get chargeTaskNum => _chargeTaskNum; + num? get deviceNum => _deviceNum; Map toJson() { final map = {}; @@ -124,6 +141,10 @@ class Data { map['roleId'] = _roleId; map['avatar'] = _avatar; map['nickName'] = _nickName; + map['attProjectNum'] = _attProjectNum; + map['chargeTaskNum'] = _chargeTaskNum; + map['deviceNum'] = _deviceNum; return map; } -} + +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 5bc3b4ae571dc6a6e581af07013264fadf5d65dd..9489c7cfbd60016da76b519b046468f77ba405df 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -27,6 +27,8 @@ import 'package:management/page/ModuleProject/create_demand_screen/view.dart'; import 'package:management/page/ModuleProject/create_project_scree/view.dart'; import 'package:management/page/ModuleProject/demand_or_task_detail_screen/logic.dart'; import 'package:management/page/ModuleProject/demand_or_task_detail_screen/view.dart'; +import 'package:management/page/ModuleProject/file_preview_screen/view.dart'; +import 'package:management/page/ModuleProject/manage_for_money_screen/view.dart'; import 'package:management/page/ModuleProject/project_conclusion_screen/view.dart'; import 'package:management/page/ModuleProject/project_detail_screen/view.dart'; import 'package:management/page/ModuleProject/project_screen/view.dart'; @@ -129,6 +131,8 @@ class RouteConfig { static const String demandOrTaskScreen = '/demandOrTaskScreen'; static const String showMoreDemandScreen = '/showMoreDemandScreen'; static const String showMoreLogScreen = '/showMoreLogScreen'; + static const String manageForMoney = '/manageForMoneyScreen'; + static const String filePreviewScreen = '/filePreviewScreen'; ///ModuleMain static const String mainScreen = '/mainScreen'; @@ -223,6 +227,12 @@ class RouteConfig { name: showMoreDemandScreen, page: () => const ShowMoreDemandScreenPage()), GetPage(name: showMoreLogScreen, page: () => const ShowMoreLogScreenPage()), + GetPage(name: manageForMoney, page: () => const ManageForMoneyScreenPage()), + GetPage( + name: filePreviewScreen, + page: () => const FilePreviewScreenPage(), + transition: Transition.downToUp, + ), ///ModuleMain GetPage(name: mainScreen, page: () => const MainScreenPage()), diff --git a/lib/page/ModuleMain/main_screen/logic.dart b/lib/page/ModuleMain/main_screen/logic.dart index c5c172332394e6b819a2233785c7f1c9254f9b67..35f94fba1d7278994d1b8b9df6d22d63f3e29403 100644 --- a/lib/page/ModuleMain/main_screen/logic.dart +++ b/lib/page/ModuleMain/main_screen/logic.dart @@ -1,9 +1,12 @@ import 'dart:math'; +import 'package:android_intent_plus/android_intent.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:management/const/consts.dart'; import 'package:management/data/network/api/api.dart'; +import 'package:management/data/network/entity/demand/response/ListDemandOrTaskForMain.dart' + as demand; import 'package:management/data/network/entity/project/response/ListProjectResponse.dart'; import 'package:management/element/loading.dart'; import 'package:management/element/showLogSheet.dart'; @@ -195,4 +198,30 @@ class MainScreenLogic extends GetxController { return; }); } + + setAlarm(demand.Records listChildDemand) { + final intent = AndroidIntent( + action: 'android.intent.action.INSERT', // Important + data: 'content://com.android.calendar/event', // Important + type: "vnd.android.cursor.dir/event", // Important + arguments: { + 'title': listChildDemand.name, + 'allDay': true, + 'beginTime': DateTime.parse( + listChildDemand.startTime ?? DateTime.now().toIso8601String()) + .microsecondsSinceEpoch, + 'endTime': DateTime.parse( + listChildDemand.endTime ?? DateTime.now().toIso8601String()) + .microsecondsSinceEpoch, + 'description': + '${listChildDemand.projectName} + ${listChildDemand.creator?.nickName}', + 'eventLocation': 'unknown', + 'hasAlarm': 1, + 'calendar_id': 1, + 'eventTimezone': DateTime.now().timeZoneName + }, + ); + + intent.launchChooser(MyText.caatsd.tr); + } } diff --git a/lib/page/ModuleMain/main_screen/view.dart b/lib/page/ModuleMain/main_screen/view.dart index 20154fe73ee5a0d640bbef6d73fa1d37f2a2e2c1..c58b3970cc67cd233a532c1103218240e58b01ab 100644 --- a/lib/page/ModuleMain/main_screen/view.dart +++ b/lib/page/ModuleMain/main_screen/view.dart @@ -475,19 +475,39 @@ class MainScreenPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - state.listChildDemand[index].name ?? - MyText.loading.tr, - style: Theme.of(context).textTheme.titleMedium), - const SizedBox( - height: 2, - ), - Text( - '${MyText.dueDate.tr} : ${state.listChildDemand[index].endTime ?? ' '}', - style: Theme.of(context) - .textTheme - .bodyMedium - ?.copyWith(fontWeight: FontWeight.w400), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + state.listChildDemand[index].name ?? + MyText.loading.tr, + style: Theme.of(context) + .textTheme + .titleMedium), + const SizedBox( + height: 2, + ), + Text( + '${MyText.dueDate.tr} : ${state.listChildDemand[index].endTime ?? ' '}', + style: Theme.of(context) + .textTheme + .bodyMedium + ?.copyWith( + fontWeight: FontWeight.w400), + ), + ], + ), + IconButton( + onPressed: () => logic + .setAlarm(state.listChildDemand[index]), + icon: const Icon( + Icons.alarm_add_outlined, + color: MyColor.gradientYellow, + )) + ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, diff --git a/lib/page/ModuleManage/employee_detail_screen/view.dart b/lib/page/ModuleManage/employee_detail_screen/view.dart index a5065d69f6352f00088235ec240c1fd078c8cce4..a0c901e706e8d8df23f16ddfb0b04c4acd18354c 100644 --- a/lib/page/ModuleManage/employee_detail_screen/view.dart +++ b/lib/page/ModuleManage/employee_detail_screen/view.dart @@ -12,9 +12,7 @@ class EmployeeDetailScreenPage extends StatelessWidget { @override Widget build(BuildContext context) { final logic = Get.put(EmployeeDetailScreenLogic()); - final state = Get - .find() - .state; + final state = Get.find().state; return Scaffold( appBar: AppBar(), @@ -30,8 +28,8 @@ class EmployeeDetailScreenPage extends StatelessWidget { ), ClipOval( child: FadeInImage( - image: NetworkImage(state.data.value.avatar ?? - GlobalInit.headImage), + image: NetworkImage( + state.data.value.avatar ?? GlobalInit.headImage), height: 120, width: 120, fit: BoxFit.fill, @@ -44,20 +42,14 @@ class EmployeeDetailScreenPage extends StatelessWidget { ), Text( state.data.value.nickName ?? MyText.defaultName, - style: Theme - .of(context) - .textTheme - .titleLarge, + style: Theme.of(context).textTheme.titleLarge, ), const SizedBox( height: 6, ), Text( state.data.value.jobNumber.toString(), - style: Theme - .of(context) - .textTheme - .bodyMedium, + style: Theme.of(context).textTheme.bodyMedium, ), const SizedBox( height: 30, @@ -71,23 +63,19 @@ class EmployeeDetailScreenPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( - state.projectNum.value.toString(), - style: Theme - .of(context) - .textTheme - .titleLarge, + state.data.value.attProjectNum.toString(), + style: Theme.of(context).textTheme.titleLarge, ), Text( MyText.projects.tr, - style: Theme - .of(context) + style: Theme.of(context) .textTheme .bodyMedium ?.copyWith( - fontWeight: FontWeight.w400, - color: Get.isDarkMode - ? MyColor.white - : MyColor.grayScale[800]), + fontWeight: FontWeight.w400, + color: Get.isDarkMode + ? MyColor.white + : MyColor.grayScale[800]), ), ], ), @@ -102,23 +90,19 @@ class EmployeeDetailScreenPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( - state.taskNum.value.toString(), - style: Theme - .of(context) - .textTheme - .titleLarge, + state.data.value.chargeTaskNum.toString(), + style: Theme.of(context).textTheme.titleLarge, ), Text( MyText.tasks.tr, - style: Theme - .of(context) + style: Theme.of(context) .textTheme .bodyMedium ?.copyWith( - fontWeight: FontWeight.w400, - color: Get.isDarkMode - ? MyColor.white - : MyColor.grayScale[800]), + fontWeight: FontWeight.w400, + color: Get.isDarkMode + ? MyColor.white + : MyColor.grayScale[800]), ), ], ), @@ -132,23 +116,19 @@ class EmployeeDetailScreenPage extends StatelessWidget { Column( children: [ Text( - state.deviceNum.value.toString(), - style: Theme - .of(context) - .textTheme - .titleLarge, + state.data.value.deviceNum.toString(), + style: Theme.of(context).textTheme.titleLarge, ), Text( MyText.devices.tr, - style: Theme - .of(context) + style: Theme.of(context) .textTheme .bodyMedium ?.copyWith( - fontWeight: FontWeight.w400, - color: Get.isDarkMode - ? MyColor.white - : MyColor.grayScale[800]), + fontWeight: FontWeight.w400, + color: Get.isDarkMode + ? MyColor.white + : MyColor.grayScale[800]), ), ], ) diff --git a/lib/page/ModuleProject/demand_or_task_detail_screen/logic.dart b/lib/page/ModuleProject/demand_or_task_detail_screen/logic.dart index 9119f4d26ef70aaaf5fa3fc01c923688b8b1c14d..9b9fc0552e92e5fb44383c4ea0467407c7d74e99 100644 --- a/lib/page/ModuleProject/demand_or_task_detail_screen/logic.dart +++ b/lib/page/ModuleProject/demand_or_task_detail_screen/logic.dart @@ -1,5 +1,6 @@ import 'package:dio/dio.dart' as dio; import 'package:file_picker/file_picker.dart'; +import 'package:file_preview/file_preview.dart'; import 'package:flutter/material.dart'; import 'package:flutter_datetime_picker_plus/flutter_datetime_picker_plus.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -8,6 +9,8 @@ import 'package:management/const/consts.dart'; import 'package:management/const/init.dart'; import 'package:management/data/network/api/api.dart'; import 'package:management/data/network/entity/demand/request/ChangeDemandOrTaskRequestParams.dart'; +import 'package:management/data/network/entity/demand/response/DemandOrTaskDetailResponse.dart' + as demand_detail; import 'package:management/data/network/entity/demand/response/ListChildDemandOrTaskResponse.dart'; import 'package:management/data/network/entity/demand/response/ListLogDemandOrTaskResponse.dart' as log; @@ -285,7 +288,8 @@ class DemandOrTaskDetailScreenLogic extends GetxController { if (value.code == 200) { refreshDemandOrTaskDetailPage(); Get.find().getListByStatus(); - Get.find().refreshProjectDetailPage(); + // error + // Get.find()?.refreshProjectDetailPage(); } else { Utils.toastError(value.msg); } @@ -537,4 +541,18 @@ class DemandOrTaskDetailScreenLogic extends GetxController { id: state.demandId, description: newDescription); _realChangeDemand(params); } + + previewFile(demand_detail.Attachments listAttachment) async { + if (listAttachment.url == null) return; + // Utils.toastWarning(url); + //使用前进行判断是否已经初始化 + // var isInit = await FilePreview.tbsHasInit(); + // if (!isInit) { + // await FilePreview.initTBS(license: "initTbs"); + // return; + // } + + Get.toNamed(RouteConfig.filePreviewScreen, + arguments: {'url': listAttachment.url, 'name': listAttachment.name}); + } } diff --git a/lib/page/ModuleProject/demand_or_task_detail_screen/view.dart b/lib/page/ModuleProject/demand_or_task_detail_screen/view.dart index 02998ced2c7e77394dadb1d4feb8e28ff8a253f3..1c6c3efb75b2cbcb2c97c072d8ee15021dcf2cd5 100644 --- a/lib/page/ModuleProject/demand_or_task_detail_screen/view.dart +++ b/lib/page/ModuleProject/demand_or_task_detail_screen/view.dart @@ -348,6 +348,7 @@ class DemandOrTaskDetailScreenPage extends StatelessWidget { size: 18, color: MyColor.primary, ), + onPressed: () => logic.previewFile(state.listAttachment[index]), deleteIcon: const Icon( IconLight.Iconly_Light_Outline_Close_Square, size: 18, diff --git a/lib/page/ModuleProject/file_preview_screen/logic.dart b/lib/page/ModuleProject/file_preview_screen/logic.dart new file mode 100644 index 0000000000000000000000000000000000000000..0deaffe792c9d6d782f6bb0274a3d083d8efa2d9 --- /dev/null +++ b/lib/page/ModuleProject/file_preview_screen/logic.dart @@ -0,0 +1,14 @@ +import 'package:get/get.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'state.dart'; + +class FilePreviewScreenLogic extends GetxController { + final FilePreviewScreenState state = FilePreviewScreenState(); + + download() async { + if (!await launchUrl(Uri.parse(state.url))) { + throw Exception('Could not launch ${state.url}'); + } + } +} diff --git a/lib/page/ModuleProject/file_preview_screen/state.dart b/lib/page/ModuleProject/file_preview_screen/state.dart new file mode 100644 index 0000000000000000000000000000000000000000..dbb43adeb3146a39b0d52f668bfd0f10501af66d --- /dev/null +++ b/lib/page/ModuleProject/file_preview_screen/state.dart @@ -0,0 +1,11 @@ +import 'package:get/get.dart'; + +class FilePreviewScreenState { + var url = ''; + var name = ''; + FilePreviewScreenState() { + ///Initialize variables + url = Get.arguments['url']; + name = Get.arguments['name']; + } +} diff --git a/lib/page/ModuleProject/file_preview_screen/view.dart b/lib/page/ModuleProject/file_preview_screen/view.dart new file mode 100644 index 0000000000000000000000000000000000000000..061860634481745a5141d292943a00b3a25d61cb --- /dev/null +++ b/lib/page/ModuleProject/file_preview_screen/view.dart @@ -0,0 +1,40 @@ +import 'package:file_preview/file_preview.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:management/const/consts.dart'; +import 'package:management/element/toast.dart'; + +import 'logic.dart'; + +class FilePreviewScreenPage extends StatelessWidget { + const FilePreviewScreenPage({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final logic = Get.put(FilePreviewScreenLogic()); + final state = Get.find().state; + + return Scaffold( + appBar: AppBar( + title: Text(state.name), + actions: [ + IconButton(onPressed:() => logic.download(), icon: const Icon(Icons.download),) + ], + ), + body: Expanded( + child: FilePreviewWidget( + width: 400, + height: 700, + path: state.url, + callBack: FilePreviewCallBack(onShow: () { + Utils.toastNotification(MyText.fileOpenSuccess.tr); + }, onDownload: (progress) { + Utils.toast(MyText.fileOpenProgress.tr, "$progress %"); + }, onFail: (code, msg) { + Utils.toastError("${MyText.fileOpenFail.tr} $code $msg"); + }), + ), + ), + ); + } +} diff --git a/lib/page/ModuleProject/manage_for_money_screen/logic.dart b/lib/page/ModuleProject/manage_for_money_screen/logic.dart new file mode 100644 index 0000000000000000000000000000000000000000..b64e2cdbc8fdb6fa78198581d086b0fd63959e78 --- /dev/null +++ b/lib/page/ModuleProject/manage_for_money_screen/logic.dart @@ -0,0 +1,14 @@ +import 'package:get/get.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'state.dart'; + +class ManageForMoneyScreenLogic extends GetxController { + final ManageForMoneyScreenState state = ManageForMoneyScreenState(); + + openBrowser() async { + if (!await launchUrl(state.url)) { + throw Exception('Could not launch ${state.url}'); + } + } +} diff --git a/lib/page/ModuleProject/manage_for_money_screen/state.dart b/lib/page/ModuleProject/manage_for_money_screen/state.dart new file mode 100644 index 0000000000000000000000000000000000000000..93c0266c3f54e1cad89f510699493aab606457f6 --- /dev/null +++ b/lib/page/ModuleProject/manage_for_money_screen/state.dart @@ -0,0 +1,27 @@ +import 'package:get/get.dart'; +import 'package:management/const/consts.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +class ManageForMoneyScreenState { + var controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setBackgroundColor(MyColor.white) + ..setNavigationDelegate((NavigationDelegate( + onProgress: (int p) {}, + onPageStarted: (String url) {}, + onPageFinished: (String url) {}, + onWebResourceError: (WebResourceError error) {}, + onNavigationRequest: (NavigationRequest request) { + // if (request.url.startsWith('https://www.youtube.com/')) { + // return NavigationDecision.prevent; + // } + return NavigationDecision.navigate; + }, + ))); + late Uri url; + ManageForMoneyScreenState() { + ///Initialize variables + url = Uri.parse(Get.arguments['url']); + controller.loadRequest(url); + } +} diff --git a/lib/page/ModuleProject/manage_for_money_screen/view.dart b/lib/page/ModuleProject/manage_for_money_screen/view.dart new file mode 100644 index 0000000000000000000000000000000000000000..22dd089de64a16c13ae2211af12b8b44baa2ab37 --- /dev/null +++ b/lib/page/ModuleProject/manage_for_money_screen/view.dart @@ -0,0 +1,28 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:management/const/consts.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +import 'logic.dart'; + +class ManageForMoneyScreenPage extends StatelessWidget { + const ManageForMoneyScreenPage({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final logic = Get.put(ManageForMoneyScreenLogic()); + final state = Get.find().state; + + return Scaffold( + appBar: AppBar( + title: Text(MyText.RDExpenseManagement.tr,style: Theme.of(context).textTheme.bodyLarge,), + actions: [ + IconButton( + onPressed: () => logic.openBrowser(), + icon: const Icon(Icons.open_in_browser_outlined)), + ], + ), + body: WebViewWidget(controller: state.controller), + ); + } +} diff --git a/lib/page/ModuleProject/project_detail_screen/logic.dart b/lib/page/ModuleProject/project_detail_screen/logic.dart index 2c1e0483f832681e9513d484bf781827f91c090a..ddcafe3121e3daf179555606c7edd87be87f896f 100644 --- a/lib/page/ModuleProject/project_detail_screen/logic.dart +++ b/lib/page/ModuleProject/project_detail_screen/logic.dart @@ -8,6 +8,7 @@ import 'package:management/element/showLogSheet.dart'; import 'package:management/element/toast.dart'; import 'package:management/main.dart'; import 'package:management/page/ModuleProject/project_screen/logic.dart'; +import 'package:webview_flutter/webview_flutter.dart'; import 'state.dart'; @@ -133,6 +134,24 @@ class ProjectDetailScreenLogic extends GetxController { ), ), ), + Container( + padding: const EdgeInsets.symmetric(vertical: 2), + width: double.infinity, + height: 60, + child: TextButton( + onPressed: () => _manageForMoney(), + style: Theme.of(Get.context!).textButtonTheme.style, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + MyText.RDExpenseManagement.tr, + style: Theme.of(Get.context!).textTheme.bodyLarge, + ), + ], + ), + ), + ), Container( padding: const EdgeInsets.symmetric(vertical: 2), width: double.infinity, @@ -337,4 +356,10 @@ class ProjectDetailScreenLogic extends GetxController { } return Colors.transparent; } + + _manageForMoney() { + Get.toNamed(RouteConfig.manageForMoney, arguments: { + 'url': 'https://tracking.sshine.ltd/#/devExpenses/importAuxiliaryLedger' + }); + } } diff --git a/pubspec.lock b/pubspec.lock index d32018eb67266dc7913f46722084288caebca293..75c46c78d585dc712e47b0afba3b344beaca0548 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -17,6 +17,14 @@ packages: url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" source: hosted version: "5.13.0" + android_intent_plus: + dependency: "direct main" + description: + name: android_intent_plus + sha256: "2bfdbee8d65e7c26f88b66f0a91f2863da4d3596d8a658b4162c8de5cf04b074" + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "5.0.2" archive: dependency: transitive description: @@ -922,6 +930,70 @@ packages: url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" source: hosted version: "1.3.2" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e" + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "6.2.6" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "360a6ed2027f18b73c8d98e159dda67a61b7f2e0f6ec26e86c3ada33b0621775" + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "6.3.1" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89" + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "6.3.0" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "3.1.1" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "3.2.0" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "2.2.3" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "3.1.1" vector_graphics: dependency: transitive description: @@ -986,6 +1058,38 @@ packages: url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" source: hosted version: "2.4.2" + webview_flutter: + dependency: "direct main" + description: + name: webview_flutter + sha256: "25e1b6e839e8cbfbd708abc6f85ed09d1727e24e08e08c6b8590d7c65c9a8932" + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "4.7.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: dad3313c9ead95517bb1cae5e1c9d20ba83729d5a59e5e83c0a2d66203f27f91 + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "3.16.1" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "2.10.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: f12f8d8a99784b863e8b85e4a9a5e3cf1839d6803d2c0c3e0533a8f3c5a992a7 + url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + source: hosted + version: "3.13.0" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 026c1144ea63fc6d250527e905c51c8a62e4c3da..329988e11065ec3daa4476f06d53998963ea097b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -49,12 +49,16 @@ dependencies: flutter_easyloading: ^3.0.5 image_picker: ^1.0.7 file_picker: ^8.0.0+1 - file_preview: ^1.2.0 + flutter_localizations: sdk: flutter intl: any flutter_datetime_picker_plus: ^2.1.0 timelines: ^0.1.0 + webview_flutter: ^4.7.0 + url_launcher: ^6.2.6 + android_intent_plus: ^5.0.2 + file_preview: ^1.2.0 # quill_html_editor: ^2.2.8