diff --git a/star_lock/.run/main_dev_dart.xml b/star_lock/.run/main_dev_dart.xml
new file mode 100644
index 00000000..0741c7cc
--- /dev/null
+++ b/star_lock/.run/main_dev_dart.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/star_lock/.run/main_pre_dart.xml b/star_lock/.run/main_pre_dart.xml
new file mode 100644
index 00000000..f3cf3086
--- /dev/null
+++ b/star_lock/.run/main_pre_dart.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/star_lock/.run/main_sky_dart.xml b/star_lock/.run/main_sky_dart.xml
new file mode 100644
index 00000000..cc2938e0
--- /dev/null
+++ b/star_lock/.run/main_sky_dart.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/star_lock/.run/main_xhj_dart.xml b/star_lock/.run/main_xhj_dart.xml
new file mode 100644
index 00000000..1eaab668
--- /dev/null
+++ b/star_lock/.run/main_xhj_dart.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/star_lock/README.md b/star_lock/README.md
index debff993..3a80949a 100644
--- a/star_lock/README.md
+++ b/star_lock/README.md
@@ -1,16 +1,72 @@
-# star_lock
+# 星锁APP
-A new Flutter project.
+星云项目组旗下的智能锁应用,其中锁相关数据接入星云平台,业务数据接入星锁自有后台。
-## Getting Started
+基于Flutter技术架构,支持Android和iOS平台。
-This project is a starting point for a Flutter application.
+## 开发步骤
-A few resources to get you started if this is your first Flutter project:
+### 安装Flutter
-- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
-- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
+参阅 [安装 - Flutter](https://docs.flutter.dev/get-started/install)
-For help getting started with Flutter development, view the
-[online documentation](https://docs.flutter.dev/), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
+然后 `flutter doctor` 检查环境
+
+### 禁用不需要的平台
+
+```bash
+flutter config --no-enable-macos-desktop --no-enable-windows-desktop --no-enable-linux-desktop --no-enable-web
+```
+
+
+### 安装依赖
+
+```bash
+flutter pub get
+```
+
+### 运行
+
+```bash
+
+# 运行sky渠道
+flutter run --flavor sky -t lib/main_sky.dart
+
+```
+
+## 配置签名
+
+参阅 [构建和发布 Android 应用 - 创建上载密钥库 - Flutter](https://docs.flutter.dev/deployment/android#create-an-upload-keystore)
+
+为发布渠道创建JAVA密钥储存(密钥库)文件 `.jks`,或者 `.keystore` 文件。
+
+```bash
+keytool -genkey -v -keystore android/app/sky.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
+```
+
+请记住你输入的主密码和键密码
+
+因为本项目将会发布2个以上的渠道,所以密钥库也会有2个以上,请注意区分 同一个发布渠道必须使用同一个密钥库,不要生成多个。
+
+为了编译管理方便,我们将密钥库文件放在了项目代码内。
+
+`key.properties` 文件用于存放密钥库的相关信息,但是我们不用这个文件,而是直接在 `build.gradle` 中写入密钥库的相关信息。
+因为我们将密钥库文件本身都已经储存在git中了,也就没必要再单独存放密钥信息了。
+
+## 编译
+```bash
+flutter build apk --split-per-abi --release --flavor sky -t lib/main_sky.dart
+```
+
+## 获取编译包的签名
+用于APP备案,国内商店上架等
+
+需要使用到`apksigner`工具,对于Windows来说,它在:`C:\Users\myUser\AppData\Local\Android\Sdk\build-tools\34.0.0\lib`
+
+在 `git bash` 中我需要使用 `apksigner.bat` 来使用它;在其它系统中应该可以直接使用 `apksigner` 命令即可。
+
+参阅:[How to find signature of apk file?](https://stackoverflow.com/questions/38558623/how-to-find-signature-of-apk-file)
+
+```bash
+apksigner verify --print-certs -v build/app/outputs/flutter-apk/app-sky-release.apk
+```
diff --git a/star_lock/android/.gitignore b/star_lock/android/.gitignore
index 6f568019..b0d3c96a 100644
--- a/star_lock/android/.gitignore
+++ b/star_lock/android/.gitignore
@@ -8,6 +8,8 @@ GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
-key.properties
-**/*.keystore
-**/*.jks
+# 因为我们要管理多个项目,所以这里不要忽略keystore
+# 而且我们的代码库是私有的,不存在泄露问题
+#key.properties
+#**/*.keystore
+#**/*.jks
diff --git a/star_lock/android/app/build.gradle b/star_lock/android/app/build.gradle
index d6cc2826..59acbbb9 100644
--- a/star_lock/android/app/build.gradle
+++ b/star_lock/android/app/build.gradle
@@ -28,7 +28,59 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
- compileSdkVersion flutter.compileSdkVersion
+ signingConfigs {
+ pre {
+ storeFile file("starlock.keystore")
+ storePassword '123456'
+ keyAlias = 'starlock'
+ keyPassword '123456'
+ }
+ sky {
+ // CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
+ storeFile file("sky.jks")
+ storePassword 'sky2028'
+ keyAlias = 'upload'
+ keyPassword 'sky2028'
+ }
+ xhj {
+ storeFile file("xhj.jks")
+ storePassword 'xhj8872'
+ keyAlias = 'upload'
+ keyPassword 'xhj8872'
+ }
+ }
+ // ----- BEGIN flavorDimensions (autogenerated by flutter_flavorizr) -----
+ flavorDimensions "flavor-type"
+
+ productFlavors {
+ dev {
+ dimension "flavor-type"
+ applicationId "com.starlock.lock.dev"
+ resValue "string", "app_name", "星锁-dev"
+ }
+ pre {
+ dimension "flavor-type"
+ applicationId "com.starlock.lock.pre"
+ resValue "string", "app_name", "星锁"
+ }
+ sky {
+ dimension "flavor-type"
+ applicationId "com.skychip.lock"
+ signingConfig signingConfigs.sky
+ resValue "string", "app_name", "锁通通"
+ }
+ xhj {
+ dimension "flavor-type"
+ applicationId "com.xhjcn.lock"
+ signingConfig signingConfigs.xhj
+ resValue "string", "app_name", "鑫锁"
+ }
+ }
+
+ // ----- END flavorDimensions (autogenerated by flutter_flavorizr) -----
+
+
+ compileSdkVersion flutter.compileSdkVersion
ndkVersion flutter.ndkVersion
lintOptions{
@@ -52,7 +104,6 @@ android {
defaultConfig {
- // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "cn.starlock.lock"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
@@ -63,37 +114,28 @@ android {
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
+ signingConfig signingConfigs.pre
+// 为减少体积,使用不同架构分包发布编译选项 flutter build apk --split-per-abi
+// 所以需要禁用ndk在同一个个包中包含多个架构
ndk {
//设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
}
- }
-
- signingConfigs {
- release {
- storeFile file("starlock.keystore")
- storePassword '123456'
- keyAlias = 'starlock'
- keyPassword '123456'
- }
- debug {
- storeFile file("starlock.keystore")
- storePassword '123456'
- keyAlias = 'starlock'
- keyPassword '123456'
+ splits {
+ abi {
+ include "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
}
-
buildTypes {
release {
- // TODO: Add your own signing config for the release build.
- // Signing with the debug keys for now, so `flutter run --release` works.
- signingConfig signingConfigs.release
+ productFlavors.dev.signingConfig signingConfigs.pre
+ productFlavors.pre.signingConfig signingConfigs.pre
+ productFlavors.sky.signingConfig signingConfigs.sky
+ productFlavors.xhj.signingConfig signingConfigs.xhj
}
debug {
- // TODO: Add your own signing config for the release build.
- // Signing with the debug keys for now, so `flutter run --debug` works.
- signingConfig signingConfigs.debug
+ signingConfig signingConfigs.pre
}
}
}
diff --git a/star_lock/android/app/sky.jks b/star_lock/android/app/sky.jks
new file mode 100644
index 00000000..e0c4d26d
Binary files /dev/null and b/star_lock/android/app/sky.jks differ
diff --git a/star_lock/android/app/src/dev/res/mipmap-hdpi/ic_launcher.png b/star_lock/android/app/src/dev/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..c4abfb2f
Binary files /dev/null and b/star_lock/android/app/src/dev/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/dev/res/mipmap-mdpi/ic_launcher.png b/star_lock/android/app/src/dev/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..6ef8ace4
Binary files /dev/null and b/star_lock/android/app/src/dev/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/dev/res/mipmap-xhdpi/ic_launcher.png b/star_lock/android/app/src/dev/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..d17ccde3
Binary files /dev/null and b/star_lock/android/app/src/dev/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher.png b/star_lock/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..d496e04a
Binary files /dev/null and b/star_lock/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher.png b/star_lock/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..7af9b770
Binary files /dev/null and b/star_lock/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/main/AndroidManifest.xml b/star_lock/android/app/src/main/AndroidManifest.xml
index 3a99482b..1cf2a9b9 100644
--- a/star_lock/android/app/src/main/AndroidManifest.xml
+++ b/star_lock/android/app/src/main/AndroidManifest.xml
@@ -1,110 +1,78 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/star_lock/android/app/src/main/res/drawable-v21/launch_background.xml b/star_lock/android/app/src/main/res/drawable-v21/launch_background.xml
index dd2edc21..6a36c4f3 100644
--- a/star_lock/android/app/src/main/res/drawable-v21/launch_background.xml
+++ b/star_lock/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -7,6 +7,6 @@
-
+ android:src="@mipmap/ic_launcher" />
diff --git a/star_lock/android/app/src/main/res/drawable/launch_background.xml b/star_lock/android/app/src/main/res/drawable/launch_background.xml
index dd2edc21..6a36c4f3 100644
--- a/star_lock/android/app/src/main/res/drawable/launch_background.xml
+++ b/star_lock/android/app/src/main/res/drawable/launch_background.xml
@@ -7,6 +7,6 @@
-
+ android:src="@mipmap/ic_launcher" />
diff --git a/star_lock/android/app/src/main/res/mipmap-hdpi/ic_logo.png b/star_lock/android/app/src/main/res/mipmap-hdpi/ic_logo.png
deleted file mode 100644
index 9e24e3f8..00000000
Binary files a/star_lock/android/app/src/main/res/mipmap-hdpi/ic_logo.png and /dev/null differ
diff --git a/star_lock/android/app/src/main/res/mipmap-ldpi/ic_logo.png b/star_lock/android/app/src/main/res/mipmap-ldpi/ic_logo.png
deleted file mode 100644
index 7cfb7f16..00000000
Binary files a/star_lock/android/app/src/main/res/mipmap-ldpi/ic_logo.png and /dev/null differ
diff --git a/star_lock/android/app/src/main/res/mipmap-mdpi/ic_logo.png b/star_lock/android/app/src/main/res/mipmap-mdpi/ic_logo.png
deleted file mode 100644
index 3af52dd8..00000000
Binary files a/star_lock/android/app/src/main/res/mipmap-mdpi/ic_logo.png and /dev/null differ
diff --git a/star_lock/android/app/src/main/res/mipmap-xhdpi/ic_logo.png b/star_lock/android/app/src/main/res/mipmap-xhdpi/ic_logo.png
deleted file mode 100644
index fc53ab17..00000000
Binary files a/star_lock/android/app/src/main/res/mipmap-xhdpi/ic_logo.png and /dev/null differ
diff --git a/star_lock/android/app/src/main/res/mipmap-xxhdpi/ic_logo.png b/star_lock/android/app/src/main/res/mipmap-xxhdpi/ic_logo.png
deleted file mode 100644
index ea687ea3..00000000
Binary files a/star_lock/android/app/src/main/res/mipmap-xxhdpi/ic_logo.png and /dev/null differ
diff --git a/star_lock/android/app/src/main/res/mipmap-xxxhdpi/ic_logo.png b/star_lock/android/app/src/main/res/mipmap-xxxhdpi/ic_logo.png
deleted file mode 100644
index 3a446edc..00000000
Binary files a/star_lock/android/app/src/main/res/mipmap-xxxhdpi/ic_logo.png and /dev/null differ
diff --git a/star_lock/android/app/src/pre/res/mipmap-hdpi/ic_launcher.png b/star_lock/android/app/src/pre/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..99717435
Binary files /dev/null and b/star_lock/android/app/src/pre/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/pre/res/mipmap-mdpi/ic_launcher.png b/star_lock/android/app/src/pre/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..57a9488a
Binary files /dev/null and b/star_lock/android/app/src/pre/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/pre/res/mipmap-xhdpi/ic_launcher.png b/star_lock/android/app/src/pre/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..ec6c223a
Binary files /dev/null and b/star_lock/android/app/src/pre/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/pre/res/mipmap-xxhdpi/ic_launcher.png b/star_lock/android/app/src/pre/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..a5008e10
Binary files /dev/null and b/star_lock/android/app/src/pre/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/pre/res/mipmap-xxxhdpi/ic_launcher.png b/star_lock/android/app/src/pre/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..539be179
Binary files /dev/null and b/star_lock/android/app/src/pre/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/sky/res/mipmap-hdpi/ic_launcher.png b/star_lock/android/app/src/sky/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..4587c19d
Binary files /dev/null and b/star_lock/android/app/src/sky/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/sky/res/mipmap-mdpi/ic_launcher.png b/star_lock/android/app/src/sky/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..32e709f3
Binary files /dev/null and b/star_lock/android/app/src/sky/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/sky/res/mipmap-xhdpi/ic_launcher.png b/star_lock/android/app/src/sky/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..bdd7f056
Binary files /dev/null and b/star_lock/android/app/src/sky/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/sky/res/mipmap-xxhdpi/ic_launcher.png b/star_lock/android/app/src/sky/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..1598749d
Binary files /dev/null and b/star_lock/android/app/src/sky/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/sky/res/mipmap-xxxhdpi/ic_launcher.png b/star_lock/android/app/src/sky/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..644b4d33
Binary files /dev/null and b/star_lock/android/app/src/sky/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/xhj/res/mipmap-hdpi/ic_launcher.png b/star_lock/android/app/src/xhj/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..e17ec78d
Binary files /dev/null and b/star_lock/android/app/src/xhj/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/xhj/res/mipmap-mdpi/ic_launcher.png b/star_lock/android/app/src/xhj/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..4e071c25
Binary files /dev/null and b/star_lock/android/app/src/xhj/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/xhj/res/mipmap-xhdpi/ic_launcher.png b/star_lock/android/app/src/xhj/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..f190d692
Binary files /dev/null and b/star_lock/android/app/src/xhj/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/xhj/res/mipmap-xxhdpi/ic_launcher.png b/star_lock/android/app/src/xhj/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..db495a38
Binary files /dev/null and b/star_lock/android/app/src/xhj/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/src/xhj/res/mipmap-xxxhdpi/ic_launcher.png b/star_lock/android/app/src/xhj/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..58a29a5e
Binary files /dev/null and b/star_lock/android/app/src/xhj/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/star_lock/android/app/starlock.keystore b/star_lock/android/app/starlock.keystore
new file mode 100644
index 00000000..30681406
Binary files /dev/null and b/star_lock/android/app/starlock.keystore differ
diff --git a/star_lock/android/app/xhj.jks b/star_lock/android/app/xhj.jks
new file mode 100644
index 00000000..301c87d9
Binary files /dev/null and b/star_lock/android/app/xhj.jks differ
diff --git a/star_lock/assets/icon/dev.png b/star_lock/assets/icon/dev.png
new file mode 100644
index 00000000..3b73699c
Binary files /dev/null and b/star_lock/assets/icon/dev.png differ
diff --git a/star_lock/assets/icon/pre.png b/star_lock/assets/icon/pre.png
new file mode 100644
index 00000000..c20eb514
Binary files /dev/null and b/star_lock/assets/icon/pre.png differ
diff --git a/star_lock/assets/icon/sky.png b/star_lock/assets/icon/sky.png
new file mode 100644
index 00000000..6c3676ae
Binary files /dev/null and b/star_lock/assets/icon/sky.png differ
diff --git a/star_lock/assets/icon/xhj.png b/star_lock/assets/icon/xhj.png
new file mode 100644
index 00000000..8aa598c7
Binary files /dev/null and b/star_lock/assets/icon/xhj.png differ
diff --git a/star_lock/flavorizr.yaml b/star_lock/flavorizr.yaml
new file mode 100644
index 00000000..4028afd7
--- /dev/null
+++ b/star_lock/flavorizr.yaml
@@ -0,0 +1,59 @@
+# 用于编译出不同的APPID
+
+# 生成:意思是将本文件定义的配置,生成对应的代码,或者原生的配置、构建过程、文件资源等
+# 风味用法:dart run flutter_flavorizr -p ,
+
+# 以下行为都是覆盖,所以如果不是很清楚自己在做什么,请不要随意运行,以免覆盖有用的文件
+# 安卓图标:dart run flutter_flavorizr -p android:icons
+# 安卓构建参数集配置:dart run flutter_flavorizr -p android:androidManifest
+# 安卓构建目标配置:dart run flutter_flavorizr -p android:buildGradle
+# iOS图标:dart run flutter_flavorizr -
+# iOS构建参数集配置:dart run flutter_flavorizr -
+# iOS构建目标配置:dart run flutter_flavorizr -
+
+# 项目运行说明:添加不同风味后,不能再使用flutter默认的运行方式`flutter run`,而是需要指定运行的风味
+# flutter run --flavor -t lib/main_.dart
+# 注意,这里有 入口文件(main_.dart) 和 口味() 两个参数
+# 其中入口文件在代码中指定运行时的差异,例如 页面上的名称、颜色、API请求的域名等
+# 而 口味 指定 构建差异,例如 APPID、Logo、应用名称等
+# 下面是4个运行示例:
+# flutter run --flavor dev -t lib/main_dev.dart
+# flutter run --flavor pre -t lib/main_pre.dart
+# flutter run --flavor sky -t lib/main_sky.dart
+# flutter run --flavor xhj -t lib/main_xhj.dart
+
+app:
+ android:
+ flavorDimensions: "flavor-type"
+
+flavors:
+ dev:
+ app:
+ name: "星锁-dev"
+ icon: "assets/icon/dev.png"
+ android:
+ applicationId: "com.starlock.lock.dev"
+
+ pre:
+ app:
+ name: "星锁"
+ icon: "assets/icon/pre.png"
+ android:
+ applicationId: "com.starlock.lock.pre"
+ sky:
+ app:
+ name: "锁通通"
+ icon: "assets/icon/sky.png"
+ android:
+ applicationId: "com.skychip.lock"
+ customConfig:
+ signingConfig: signingConfigs.sky
+ xhj:
+ app:
+ name: "鑫锁"
+ icon: "assets/icon/xhj.png"
+ android:
+ applicationId: "com.xhjcn.lock"
+ customConfig:
+ signingConfig: signingConfigs.xhj
+ide: idea
diff --git a/star_lock/images/main/icon_face.png b/star_lock/images/main/icon_face.png
index 0aa2397c..80c7231f 100644
Binary files a/star_lock/images/main/icon_face.png and b/star_lock/images/main/icon_face.png differ
diff --git a/star_lock/images/main/icon_lockDetail_messageReminding.png b/star_lock/images/main/icon_lockDetail_messageReminding.png
index 8f170aa5..47ba9fb8 100644
Binary files a/star_lock/images/main/icon_lockDetail_messageReminding.png and b/star_lock/images/main/icon_lockDetail_messageReminding.png differ
diff --git a/star_lock/images/main/icon_lockDetail_videoLog.png b/star_lock/images/main/icon_lockDetail_videoLog.png
index 982c7554..e39dc6e0 100644
Binary files a/star_lock/images/main/icon_lockDetail_videoLog.png and b/star_lock/images/main/icon_lockDetail_videoLog.png differ
diff --git a/star_lock/images/main/icon_main_authorizedAdmin.png b/star_lock/images/main/icon_main_authorizedAdmin.png
index cdf18471..13c3463e 100644
Binary files a/star_lock/images/main/icon_main_authorizedAdmin.png and b/star_lock/images/main/icon_main_authorizedAdmin.png differ
diff --git a/star_lock/images/main/icon_main_clockingIn.png b/star_lock/images/main/icon_main_clockingIn.png
index d21ba58e..b14e38af 100644
Binary files a/star_lock/images/main/icon_main_clockingIn.png and b/star_lock/images/main/icon_main_clockingIn.png differ
diff --git a/star_lock/images/main/icon_main_electronicKey.png b/star_lock/images/main/icon_main_electronicKey.png
index 577e2336..3f8f90fe 100644
Binary files a/star_lock/images/main/icon_main_electronicKey.png and b/star_lock/images/main/icon_main_electronicKey.png differ
diff --git a/star_lock/images/main/icon_main_fingerprint.png b/star_lock/images/main/icon_main_fingerprint.png
index 6e211f0a..39da4f3e 100644
Binary files a/star_lock/images/main/icon_main_fingerprint.png and b/star_lock/images/main/icon_main_fingerprint.png differ
diff --git a/star_lock/images/main/icon_main_icCard.png b/star_lock/images/main/icon_main_icCard.png
index 68930543..e5131378 100644
Binary files a/star_lock/images/main/icon_main_icCard.png and b/star_lock/images/main/icon_main_icCard.png differ
diff --git a/star_lock/images/main/icon_main_operatingRecord.png b/star_lock/images/main/icon_main_operatingRecord.png
index 698e0eb2..c6e1ccf5 100644
Binary files a/star_lock/images/main/icon_main_operatingRecord.png and b/star_lock/images/main/icon_main_operatingRecord.png differ
diff --git a/star_lock/images/main/icon_main_password.png b/star_lock/images/main/icon_main_password.png
index a6cb4df3..7d18f743 100644
Binary files a/star_lock/images/main/icon_main_password.png and b/star_lock/images/main/icon_main_password.png differ
diff --git a/star_lock/images/main/icon_main_remoteControl.png b/star_lock/images/main/icon_main_remoteControl.png
index a71016d9..132d9c1f 100644
Binary files a/star_lock/images/main/icon_main_remoteControl.png and b/star_lock/images/main/icon_main_remoteControl.png differ
diff --git a/star_lock/images/main/icon_main_set.png b/star_lock/images/main/icon_main_set.png
index 4f23cb4e..e5f802a2 100644
Binary files a/star_lock/images/main/icon_main_set.png and b/star_lock/images/main/icon_main_set.png differ
diff --git a/star_lock/lib/app.dart b/star_lock/lib/app.dart
new file mode 100644
index 00000000..b5308d9f
--- /dev/null
+++ b/star_lock/lib/app.dart
@@ -0,0 +1,177 @@
+import 'package:aliyun_push/aliyun_push.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_easyloading/flutter_easyloading.dart';
+import 'package:flutter_localizations/flutter_localizations.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:get/get.dart';
+import 'package:permission_handler/permission_handler.dart';
+import 'package:star_lock/tools/app_manager.dart';
+import 'package:star_lock/tools/bindings/app_binding.dart';
+
+import 'package:star_lock/tools/storage.dart';
+import 'package:star_lock/tools/xs_aliyunPush.dart';
+import 'package:star_lock/translations/app_dept.dart';
+import 'package:star_lock/translations/trans_lib.dart';
+
+import 'appRouters.dart';
+import 'baseWidget.dart';
+import 'tools/appRouteObserver.dart';
+import 'dart:io';
+import 'package:flutter/services.dart';
+
+class MyApp extends StatefulWidget {
+ const MyApp({GlobalKey? key}) : super(key: key);
+
+ @override
+ State createState() => _MyAppState();
+}
+
+// 注册 RouteObserver 作为 navigation observer.
+// final RouteObserver routeObserver = RouteObserver();
+
+class _MyAppState extends State with WidgetsBindingObserver, BaseWidget {
+ @override
+ Widget build(BuildContext context) {
+ return ScreenUtilInit(
+ designSize: const Size(585, 1265),
+ builder: (w, a) => _initMaterialApp());
+ }
+
+ GetMaterialApp _initMaterialApp() => GetMaterialApp(
+ title: 'Star Lock',
+ navigatorObservers: [AppRouteObserver().routeObserver],
+ translations: TranslationMessage(),
+ supportedLocales: appDept.deptSupportedLocales,
+ localizationsDelegates: const [
+ GlobalMaterialLocalizations.delegate,
+ GlobalCupertinoLocalizations.delegate,
+ GlobalWidgetsLocalizations.delegate,
+ ],
+ localeResolutionCallback: (locale, supportedLocales) {
+ if (!supportedLocales.contains(locale)) {
+ int idx = appSupportedLocales.indexWhere(
+ (element) => element.languageCode == locale!.languageCode);
+ if (idx != -1) {
+ locale = appSupportedLocales[idx];
+ } else {
+ locale = const Locale('zh', 'CN');
+ }
+ }
+ // print("localelocalelocalelocalelocale locale:${locale} locale.languageCode:${locale.languageCode} locale.countryCode:${locale.countryCode} supportedLocales:${supportedLocales}");
+ AppManager()
+ .setLanCode(code: '${locale!.languageCode}_${locale.countryCode}');
+ return locale;
+ },
+ // locale: StoreService.to.getLanguageCode().isNotEmpty ? appDept.deptSupportedLocales.where((element) => element.languageCode == StoreService.to.getLanguageCode()).first : Get.deviceLocale,
+ locale: Get.deviceLocale,
+ fallbackLocale: const Locale('zh', 'CN'),
+ theme: ThemeData(
+ scaffoldBackgroundColor: const Color(0xFFF6F6F6),
+ backgroundColor: const Color(0xFFF6F6F6),
+ primaryColor: const Color(0xFFFFFFFF),
+ textTheme: TextTheme(
+ //用在非Material组件上的文字显示,
+ bodyText1:
+ TextStyle(fontSize: 28.sp, color: const Color(0xff2E2B2B)),
+ //Material组件上的文字显示
+ bodyText2:
+ TextStyle(fontSize: 28.sp, color: const Color(0xff2E2B2B)),
+ button: TextStyle(fontSize: 28.sp)),
+ iconTheme: IconThemeData(size: 28.sp, color: const Color(0xff2E2B2B)),
+ appBarTheme: AppBarTheme(
+ backgroundColor: const Color(0xFFFFFFFF),
+ elevation: 0,
+ centerTitle: true,
+ iconTheme: IconThemeData(color: const Color(0xff333333), size: 36.sp),
+ titleTextStyle: TextStyle(
+ color: const Color(0xff333333),
+ fontWeight: FontWeight.w400,
+ fontSize: 36.sp),
+ ),
+ splashColor: Colors.transparent, // 点击时的高亮效果设置为透明
+ highlightColor: Colors.transparent,
+ ),
+ debugShowCheckedModeBanner: false,
+ getPages: AppRouters.routePages,
+ builder: EasyLoading.init(),
+ initialBinding: AppBindings(),
+ initialRoute: '/');
+
+ @override
+ void initState() {
+ super.initState();
+ WidgetsBinding.instance.addObserver(this);
+
+ openBlueScan();
+
+ initAliyunPush();
+ }
+
+ //初始化阿里云推送
+ void initAliyunPush() {
+ final aliyunPush = AliyunPush();
+ XSAliyunPushProvider().init(aliyunPush);
+ XSAliyunPushProvider().initAliyunPush();
+
+ if (Platform.isAndroid) {
+ XSAliyunPushProvider().initAliyunThirdPush();
+ }
+
+ //暂使用DeviceID推送
+ aliyunPush.getDeviceId().then((deviceId) async {
+ // print('得到的DeviceId$deviceId');
+ final data = await Storage.getString(saveUserLoginData);
+ if (data!.isNotEmpty && deviceId.isNotEmpty) {
+ XSAliyunPushProvider()
+ .pushBindDeviceID(deviceId, Platform.isAndroid ? 10 : 20);
+ }
+ });
+ }
+
+ @override
+ void dispose() {
+ WidgetsBinding.instance.removeObserver(this);
+ super.dispose();
+ }
+}
+
+
+void openBlueScan() {
+ if (Platform.isIOS) {
+ print("有蓝牙权限开始扫描");
+ // startScanAction();
+ } else {
+ getMicrophonePermission().then((value) {
+ if (value) {
+ // 有权限
+ print("有蓝牙权限开始扫描");
+ // startScanAction();
+ } else {
+ //没有权限
+ openAppSettings(); //打开app系统设置
+ }
+ });
+ }
+}
+
+// void startScanAction() {
+// BlueManage().startScan();
+// }
+
+///请求蓝牙权限
+Future getMicrophonePermission() async {
+ // You can request multiple permissions at once.
+ Map statuses = await [
+ Permission.bluetoothScan,
+ Permission.bluetoothConnect,
+ Permission.location,
+ ].request();
+
+ //granted 通过,denied 被拒绝,permanentlyDenied 拒绝且不在提示
+ if (statuses[Permission.bluetoothScan]!.isGranted &&
+ statuses[Permission.bluetoothConnect]!.isGranted &&
+ statuses[Permission.location]!.isGranted) {
+ return true;
+ }
+ return false;
+}
diff --git a/star_lock/lib/app_settings/app_colors.dart b/star_lock/lib/app_settings/app_colors.dart
index 2ac4e057..caec2e39 100644
--- a/star_lock/lib/app_settings/app_colors.dart
+++ b/star_lock/lib/app_settings/app_colors.dart
@@ -130,4 +130,6 @@ class AppColors {
static Color openPassageModeColor = const Color(0xFFEB2A3B);// 首页开启常开模式颜色(红色)
static Color listTimeYellowColor = const Color(0xFFF3BA37);// 首页时间过期颜色(黄色)
+
+ static Color get lockDetailBottomBtnUneable => const Color(0xFF808080);// 首页时间灰色颜色(灰色)
}
diff --git a/star_lock/lib/common/XSConstantMacro/XSConstantMacro.dart b/star_lock/lib/common/XSConstantMacro/XSConstantMacro.dart
index 4c6cff9d..3af67c78 100644
--- a/star_lock/lib/common/XSConstantMacro/XSConstantMacro.dart
+++ b/star_lock/lib/common/XSConstantMacro/XSConstantMacro.dart
@@ -1,8 +1,8 @@
-import 'package:star_lock/network/api.dart';
+import '../../flavors.dart';
class XSConstantMacro {
// 网页的宏定义网址
- static String baseWebURL = Api.baseAddress; //base地址
+ static String baseWebURL = F.apiPrefix; //base地址
static String introduceURL = '$baseWebURL/app/introduce'; //介绍页
static String userAgreementURL = '$baseWebURL/app/userAgreement'; //用户协议
static String privacyPolicyURL = '$baseWebURL/app/privacy'; //隐私政策
diff --git a/star_lock/lib/flavors.dart b/star_lock/lib/flavors.dart
new file mode 100644
index 00000000..f893ff5b
--- /dev/null
+++ b/star_lock/lib/flavors.dart
@@ -0,0 +1,43 @@
+enum Flavor {
+ dev,
+ pre,
+ sky,
+ xhj,
+}
+
+class F {
+ static Flavor? appFlavor;
+
+ static String get name => appFlavor?.name ?? '';
+
+ static String get title {
+ switch (appFlavor) {
+ case Flavor.dev:
+ return '星锁-dev';
+ case Flavor.pre:
+ return '星锁-pre';
+ case Flavor.sky:
+ return '锁通通';
+ case Flavor.xhj:
+ return '鑫锁';
+ default:
+ throw Exception('flavor[$name] title not found');
+ }
+ }
+ static String get apiPrefix {
+ switch (appFlavor) {
+ case Flavor.dev:
+ return 'https://dev.lock.star-lock.cn';
+ case Flavor.pre:
+ return 'https://pre.lock.star-lock.cn';
+ case Flavor.sky:
+ return 'https://lock.skychip.top';
+ case Flavor.xhj:
+ return 'https://lock.xhjcn.ltd';
+ default:
+ // "http://192.168.1.15:8022"; //谢总本地
+ // "https://ge.lock.star-lock.cn"; //葛工开发环境地址
+ throw Exception('flavor[$name] apiPrefix not found');
+ }
+ }
+}
diff --git a/star_lock/lib/main.dart b/star_lock/lib/main.dart
index f96e0a75..66b92028 100644
--- a/star_lock/lib/main.dart
+++ b/star_lock/lib/main.dart
@@ -1,28 +1,16 @@
-import 'package:aliyun_push/aliyun_push.dart';
+import 'dart:async';
import 'package:flutter/material.dart';
-import 'package:flutter_easyloading/flutter_easyloading.dart';
-import 'package:flutter_localizations/flutter_localizations.dart';
-import 'package:flutter_screenutil/flutter_screenutil.dart';
-import 'package:get/get.dart';
-import 'package:permission_handler/permission_handler.dart';
-import 'package:star_lock/tools/app_manager.dart';
-import 'package:star_lock/tools/bindings/app_binding.dart';
+import 'package:flutter/services.dart';
+import 'package:star_lock/translations/trans_lib.dart';
+import 'app.dart';
import 'package:star_lock/tools/device_info_service.dart';
import 'package:star_lock/tools/platform_info_services.dart';
-import 'package:star_lock/tools/storage.dart';
-import 'package:star_lock/tools/xs_aliyunPush.dart';
-import 'package:star_lock/translations/app_dept.dart';
-import 'package:star_lock/translations/trans_lib.dart';
-
-import 'appRouters.dart';
-import 'baseWidget.dart';
-import 'blue/blue_manage.dart';
-import 'tools/appRouteObserver.dart';
+import 'app_settings/app_settings.dart';
import 'tools/store_service.dart';
-import 'dart:io';
-import 'package:flutter/services.dart';
+import 'package:get/get.dart';
-void main() async {
+// 该文件不可作为编译入口,请查看 flavorizr.yaml 中的说明
+FutureOr main() async {
await _setCommonServices();
// 设置国际化信息
@@ -30,135 +18,19 @@ void main() async {
runApp(MyApp());
- if (Platform.isAndroid) {
+ if (AppPlatform.isAndroid) {
SystemUiOverlayStyle systemUiOverlayStyle =
- const SystemUiOverlayStyle(statusBarColor: Colors.transparent);
+ const SystemUiOverlayStyle(statusBarColor: Colors.transparent);
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
}
}
-class MyApp extends StatefulWidget {
- const MyApp({GlobalKey? key}) : super(key: key);
-
- @override
- State createState() => _MyAppState();
-}
-
-// 注册 RouteObserver 作为 navigation observer.
-// final RouteObserver routeObserver = RouteObserver();
-
-class _MyAppState extends State with WidgetsBindingObserver, BaseWidget {
- @override
- Widget build(BuildContext context) {
- return ScreenUtilInit(
- designSize: const Size(585, 1265),
- builder: (w, a) => _initMaterialApp());
- }
-
- GetMaterialApp _initMaterialApp() => GetMaterialApp(
- title: 'Star Lock',
- navigatorObservers: [AppRouteObserver().routeObserver],
- translations: TranslationMessage(),
- supportedLocales: appDept.deptSupportedLocales,
- localizationsDelegates: const [
- GlobalMaterialLocalizations.delegate,
- GlobalCupertinoLocalizations.delegate,
- GlobalWidgetsLocalizations.delegate,
- ],
- localeResolutionCallback: (locale, supportedLocales) {
- if (!supportedLocales.contains(locale)) {
- int idx = appSupportedLocales.indexWhere(
- (element) => element.languageCode == locale!.languageCode);
- if (idx != -1) {
- locale = appSupportedLocales[idx];
- } else {
- locale = const Locale('zh', 'CN');
- }
- }
- // print("localelocalelocalelocalelocale locale:${locale} locale.languageCode:${locale.languageCode} locale.countryCode:${locale.countryCode} supportedLocales:${supportedLocales}");
- AppManager()
- .setLanCode(code: '${locale!.languageCode}_${locale.countryCode}');
- return locale;
- },
- // locale: StoreService.to.getLanguageCode().isNotEmpty ? appDept.deptSupportedLocales.where((element) => element.languageCode == StoreService.to.getLanguageCode()).first : Get.deviceLocale,
- locale: Get.deviceLocale,
- fallbackLocale: const Locale('zh', 'CN'),
- theme: ThemeData(
- scaffoldBackgroundColor: const Color(0xFFF6F6F6),
- backgroundColor: const Color(0xFFF6F6F6),
- primaryColor: const Color(0xFFFFFFFF),
- textTheme: TextTheme(
- //用在非Material组件上的文字显示,
- bodyText1:
- TextStyle(fontSize: 28.sp, color: const Color(0xff2E2B2B)),
- //Material组件上的文字显示
- bodyText2:
- TextStyle(fontSize: 28.sp, color: const Color(0xff2E2B2B)),
- button: TextStyle(fontSize: 28.sp)),
- iconTheme: IconThemeData(size: 28.sp, color: const Color(0xff2E2B2B)),
- appBarTheme: AppBarTheme(
- backgroundColor: const Color(0xFFFFFFFF),
- elevation: 0,
- centerTitle: true,
- iconTheme: IconThemeData(color: const Color(0xff333333), size: 36.sp),
- titleTextStyle: TextStyle(
- color: const Color(0xff333333),
- fontWeight: FontWeight.w400,
- fontSize: 36.sp),
- ),
- splashColor: Colors.transparent, // 点击时的高亮效果设置为透明
- highlightColor: Colors.transparent,
- ),
- debugShowCheckedModeBanner: false,
- getPages: AppRouters.routePages,
- builder: EasyLoading.init(),
- initialBinding: AppBindings(),
- initialRoute: '/');
-
- @override
- void initState() {
- super.initState();
- WidgetsBinding.instance.addObserver(this);
-
- openBlueScan();
-
- initAliyunPush();
- }
-
- //初始化阿里云推送
- void initAliyunPush() {
- final aliyunPush = AliyunPush();
- XSAliyunPushProvider().init(aliyunPush);
- XSAliyunPushProvider().initAliyunPush();
-
- if (Platform.isAndroid) {
- XSAliyunPushProvider().initAliyunThirdPush();
- }
-
- //暂使用DeviceID推送
- aliyunPush.getDeviceId().then((deviceId) async {
- // print('得到的DeviceId$deviceId');
- final data = await Storage.getString(saveUserLoginData);
- if (data!.isNotEmpty && deviceId.isNotEmpty) {
- XSAliyunPushProvider()
- .pushBindDeviceID(deviceId, Platform.isAndroid ? 10 : 20);
- }
- });
- }
-
- @override
- void dispose() {
- WidgetsBinding.instance.removeObserver(this);
- super.dispose();
- }
-}
-
// 设置国际化信息
Future _initTranslation() async => TranslationLoader.loadTranslation(
- zhSource: "images/lan/lan_zh.json",
- enSource: "images/lan/lan_en.json",
- keySource: "images/lan/lan_keys.json",
- );
+ zhSource: "images/lan/lan_zh.json",
+ enSource: "images/lan/lan_en.json",
+ keySource: "images/lan/lan_keys.json",
+);
// 设置包名服务设备信息
Future _setCommonServices() async {
@@ -167,43 +39,3 @@ Future _setCommonServices() async {
await Get.putAsync(() => DeviceInfoService().init());
// Get.log(PlatformInfoService.to.info.version);
}
-
-void openBlueScan() {
- if (Platform.isIOS) {
- print("有蓝牙权限开始扫描");
- // startScanAction();
- } else {
- getMicrophonePermission().then((value) {
- if (value) {
- // 有权限
- print("有蓝牙权限开始扫描");
- // startScanAction();
- } else {
- //没有权限
- openAppSettings(); //打开app系统设置
- }
- });
- }
-}
-
-// void startScanAction() {
-// BlueManage().startScan();
-// }
-
-///请求蓝牙权限
-Future getMicrophonePermission() async {
- // You can request multiple permissions at once.
- Map statuses = await [
- Permission.bluetoothScan,
- Permission.bluetoothConnect,
- Permission.location,
- ].request();
-
- //granted 通过,denied 被拒绝,permanentlyDenied 拒绝且不在提示
- if (statuses[Permission.bluetoothScan]!.isGranted &&
- statuses[Permission.bluetoothConnect]!.isGranted &&
- statuses[Permission.location]!.isGranted) {
- return true;
- }
- return false;
-}
diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart
index f64ad11f..4da0974d 100644
--- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart
+++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart
@@ -1,8 +1,7 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
-// import 'package:flutter_pickers/pickers.dart';
-// import 'package:flutter_pickers/time_picker/model/date_mode.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/network/api_repository.dart';
@@ -340,7 +339,7 @@ class _AuthorizedAdminPageState extends State {
// 接受者信息输入框
Widget getTFWidget(bool isHaveBtn, String tfStr, int lineIndex) {
return SizedBox(
- height: 50.h,
+ height: 65.h,
width: 300.w,
child: Row(
children: [
@@ -348,6 +347,10 @@ class _AuthorizedAdminPageState extends State {
child: TextField(
//输入框一行
maxLines: 1,
+ inputFormatters: [
+ FilteringTextInputFormatter.deny('\n'),
+ LengthLimitingTextInputFormatter(30),
+ ],
controller: lineIndex == 1
? state.emailOrPhoneController
: state.keyNameController,
@@ -355,13 +358,24 @@ class _AuthorizedAdminPageState extends State {
textAlign: TextAlign.end,
decoration: InputDecoration(
//输入里面输入文字内边距设置
- contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
+ // contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
hintText: tfStr,
- hintStyle: TextStyle(
- color: AppColors.placeholderTextColor, fontSize: 22.sp),
- //不需要输入框下划线
- border: InputBorder.none,
+ hintStyle: TextStyle(fontSize: 22.sp),
+ focusedBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
+ disabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
+ enabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
+ border: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
+ contentPadding: const EdgeInsets.symmetric(vertical: 0),
),
+ // decoration: InputDecoration(
+ // //输入里面输入文字内边距设置
+ // contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
+ // hintText: tfStr,
+ // hintStyle: TextStyle(
+ // color: AppColors.placeholderTextColor, fontSize: 22.sp),
+ // //不需要输入框下划线
+ // border: InputBorder.none,
+ // ),
),
),
SizedBox(
diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_logic.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_logic.dart
index 45f8bc3e..1bdbf550 100644
--- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_logic.dart
+++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_logic.dart
@@ -9,16 +9,16 @@ class AuthorizedAdminListLogic extends BaseGetXController {
//请求电子钥匙列表
Future> mockNetworkDataRequest() async {
ElectronicKeyListEntity entity = await ApiRepository.to.electronicKeyList(
- '0',
- state.keyInfo.value.keyId.toString(),
- '',
- state.keyInfo.value.lockId.toString(),
- '',
- state.pageNum.toString(),
- state.pageSize.toString(),
- '0',
- '0',
- state.searchStr.value);
+ endDate: '0',
+ keyId: state.keyInfo.value.keyId.toString(),
+ keyStatus: '',
+ lockId: state.keyInfo.value.lockId.toString(),
+ operatorUid: '',
+ pageNo: pageNo.toString(),
+ pageSize: pageSize.toString(),
+ startDate: '0',
+ keyRight: '0',
+ searchStr:state.searchStr.value);
List dataList = [];
if (entity.errorCode!.codeIsSuccessful) {
print("电子钥匙列表成功:${entity.data?.itemList}");
diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart
index 43c7c29d..13abfa3a 100644
--- a/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart
+++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart
@@ -36,6 +36,7 @@ class _CheckingInListPageState extends State {
haveBack: true,
backgroundColor: AppColors.mainColor,
actionsList: [
+ (state.getKeyInfosData.value.isLockOwner == 1 && state.getKeyInfosData.value.keyRight == 1) ?
GestureDetector(
onTap: () async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
@@ -48,7 +49,7 @@ class _CheckingInListPageState extends State {
logic.showToast("演示模式");
}
},
- child: Image.asset('images/main/icon_lockDetail_checkIn_set.png', width: 36.w, height: 36.w,)),
+ child: Image.asset('images/main/icon_lockDetail_checkIn_set.png', width: 36.w, height: 36.w,)) : Container(),
SizedBox(width: 30.w),
],
),
diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart
index a435e424..223aea96 100644
--- a/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart
+++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart
@@ -115,17 +115,20 @@ class _CheckingInSetPageState extends State {
SizedBox(
height: 30.h,
),
- SubmitBtn(
- btnName:
- "${TranslationLoader.lanKeys!.delete!.tr}${TranslationLoader.lanKeys!.company!.tr}",
- borderRadius: 20.w,
- fontSize: 32.sp,
- isDelete: true,
- margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 20.w),
- padding: EdgeInsets.only(top: 20.w, bottom: 20.w),
- onClick: () {
- showDeletCompanyAlertDialog(context);
- }),
+ Visibility(
+ visible: state.getKeyInfosData.value.isLockOwner == 1,
+ child: SubmitBtn(
+ btnName:
+ "${TranslationLoader.lanKeys!.delete!.tr}${TranslationLoader.lanKeys!.company!.tr}",
+ borderRadius: 20.w,
+ fontSize: 32.sp,
+ isDelete: true,
+ margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 20.w),
+ padding: EdgeInsets.only(top: 20.w, bottom: 20.w),
+ onClick: () {
+ showDeletCompanyAlertDialog(context);
+ }),
+ ),
],
),
);
diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart
index 4472602b..052e792a 100644
--- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart
+++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart
@@ -5,6 +5,8 @@ import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
+import '../../../../../tools/eventBusEventManage.dart';
+
class ElectronicKeyDetailLogic extends BaseGetXController {
final ElectronicKeyDetailState state = ElectronicKeyDetailState();
@@ -15,8 +17,10 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
state.changeNameController.text, '');
if (entity.errorCode!.codeIsSuccessful) {
print("修改要是名称成功啦啦啦啦啦");
- showToast("修改成功");
- Get.back();
+ showToast("修改成功", something: (){
+ eventBus.fire(ElectronicKeyListRefreshUI());
+ Get.back();
+ });
}
}
@@ -26,8 +30,10 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
.deleteElectronicKey(state.itemData.value.keyId.toString());
if (entity.errorCode!.codeIsSuccessful) {
print("删除电子钥匙成功");
- showToast("删除成功");
- Get.back();
+ showToast("删除成功", something: (){
+ eventBus.fire(ElectronicKeyListRefreshUI());
+ Get.back();
+ });
}
}
}
diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_logic.dart
index 360de109..4a901cd5 100644
--- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_logic.dart
+++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_logic.dart
@@ -5,6 +5,8 @@ import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/pass
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
+import '../../../../../tools/eventBusEventManage.dart';
+
class ElectronicKeyDetailChangeDateLogic extends BaseGetXController {
final ElectronicKeyDetailChangeDateState state =
ElectronicKeyDetailChangeDateState();
@@ -23,8 +25,10 @@ class ElectronicKeyDetailChangeDateLogic extends BaseGetXController {
hoursEnd: state.hoursEnd.value,
isCoerced: state.isCoerced.value);
if (entity.errorCode!.codeIsSuccessful) {
- showToast("修改成功");
- Get.back();
+ showToast("修改成功", something: (){
+ eventBus.fire(ElectronicKeyListRefreshUI());
+ Get.back();
+ });
}
}
@@ -40,8 +44,10 @@ class ElectronicKeyDetailChangeDateLogic extends BaseGetXController {
state.startDay.value,
state.weekDays.value);
if (entity.errorCode!.codeIsSuccessful) {
- showToast("修改成功");
- Get.back();
+ showToast("修改成功", something: (){
+ eventBus.fire(ElectronicKeyListRefreshUI());
+ Get.back();
+ });
}
}
}
diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_logic.dart
index cffedf02..025005bb 100644
--- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_logic.dart
+++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_logic.dart
@@ -1,24 +1,28 @@
+import 'dart:async';
+
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_state.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
+import '../../../../tools/eventBusEventManage.dart';
+
class ElectronicKeyListLogic extends BaseGetXController {
final ElectronicKeyListState state = ElectronicKeyListState();
//请求电子钥匙列表
Future mockNetworkDataRequest() async {
ElectronicKeyListEntity entity = await ApiRepository.to.electronicKeyList(
- '0',
- state.keyInfo.value.keyId.toString(),
- '',
- state.keyInfo.value.lockId.toString(),
- '',
- pageNo.toString(),
- pageSize.toString(),
- '0',
- '0',
- state.searchController.text);
+ endDate: '0',
+ keyId: state.keyInfo.value.keyId.toString(),
+ keyStatus: '',
+ lockId: state.keyInfo.value.lockId.toString(),
+ operatorUid: '',
+ pageNo: pageNo.toString(),
+ pageSize: pageSize.toString(),
+ startDate: '0',
+ keyRight: '0',
+ searchStr: state.searchController.text);
if (entity.errorCode!.codeIsSuccessful) {
if (pageNo == 1) {
state.itemDataList.value = entity.data!.itemList!;
@@ -40,6 +44,7 @@ class ElectronicKeyListLogic extends BaseGetXController {
if (entity.errorCode!.codeIsSuccessful) {
print("重置电子钥匙成功啦啦啦啦啦");
showToast("重置成功");
+ pageNo = 1;
mockNetworkDataRequest();
}
}
@@ -51,14 +56,27 @@ class ElectronicKeyListLogic extends BaseGetXController {
if (entity.errorCode!.codeIsSuccessful) {
print("删除电子钥匙成功");
showToast("删除成功");
+ pageNo = 1;
mockNetworkDataRequest();
}
}
+ /// 刷新电子钥匙列表
+ StreamSubscription? _getElectronicKeyListRefreshUIEvent;
+ void _getElectronicKeyListRefreshUIAction() {
+ // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus
+ _getElectronicKeyListRefreshUIEvent = eventBus.on().listen((event) {
+ pageNo = 1;
+ mockNetworkDataRequest();
+ });
+ }
+
@override
void onReady() {
// TODO: implement onReady
super.onReady();
+
+ _getElectronicKeyListRefreshUIAction();
}
@override
@@ -70,5 +88,8 @@ class ElectronicKeyListLogic extends BaseGetXController {
@override
void onClose() {
// TODO: implement onClose
+ super.onClose();
+
+ _getElectronicKeyListRefreshUIEvent?.cancel();
}
}
diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart
index 59bf9242..57469de0 100644
--- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart
+++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart
@@ -121,63 +121,64 @@ class _ElectronicKeyListPageState extends State {
Widget _buildMainUI() {
return Obx(() => state.itemDataList.value.isEmpty
? NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 190.h - 64.h)
- : ListView.separated(
+ : SlidableAutoCloseBehavior(
+ child: ListView.separated(
shrinkWrap: true,
itemCount: state.itemDataList.value.length,
itemBuilder: (c, index) {
- ElectronicKeyListItem indexEntity = state.itemDataList.value[index];
- String useDateStr = ''; //使用期限
- String keyStatus = ''; //钥匙状态
+ ElectronicKeyListItem indexEntity = state.itemDataList.value[index];
+ String useDateStr = ''; //使用期限
+ String keyStatus = ''; //钥匙状态
- //使用期限
- useDateStr = getUseDateStr(indexEntity);
+ //使用期限
+ useDateStr = getUseDateStr(indexEntity);
- //钥匙状态
- keyStatus = getKeyStatus(indexEntity.keyStatus);
+ //钥匙状态
+ keyStatus = getKeyStatus(indexEntity.keyStatus);
- //是否为管理钥匙
- bool isAdminKey = false;
- if (indexEntity.keyRight == 1) {
- isAdminKey = true;
- } else {
- isAdminKey = false;
- }
+ //是否为管理钥匙
+ bool isAdminKey = false;
+ if (indexEntity.keyRight == 1) {
+ isAdminKey = true;
+ } else {
+ isAdminKey = false;
+ }
- return Slidable(
- key:ValueKey(indexEntity.keyId),
- endActionPane: ActionPane(
- extentRatio: 0.2,
- motion: const ScrollMotion(),
- children: [
- SlidableAction(
- onPressed: (BuildContext context){
- showIosTipViewDialog(context, indexEntity.keyId!.toString());
- },
- backgroundColor: Colors.red,
- foregroundColor: Colors.white,
- label: '删除',
- ),
- ],
- ),
- child: _electronicKeyItem('images/controls_user.png',
- indexEntity.keyName!, useDateStr, keyStatus, isAdminKey, () {
- Navigator.pushNamed(context, Routers.electronicKeyDetailPage,
- arguments: {"itemData": indexEntity}).then((val) {
- if (val != null) {
- logic.mockNetworkDataRequest();
- setState(() {});
- }
- });
- }),
- );
+ return Slidable(
+ key:ValueKey(indexEntity.keyId),
+ endActionPane: ActionPane(
+ extentRatio: 0.2,
+ motion: const ScrollMotion(),
+ children: [
+ SlidableAction(
+ onPressed: (BuildContext context){
+ showIosTipViewDialog(context, indexEntity.keyId!.toString());
+ },
+ backgroundColor: Colors.red,
+ foregroundColor: Colors.white,
+ label: '删除',
+ ),
+ ],
+ ),
+ child: _electronicKeyItem('images/controls_user.png', indexEntity.keyName!, useDateStr, keyStatus, isAdminKey, () {
+ Navigator.pushNamed(context, Routers.electronicKeyDetailPage,
+ arguments: {"itemData": indexEntity}).then((val) {
+ if (val != null) {
+ logic.mockNetworkDataRequest();
+ setState(() {});
+ }
+ });
+ }),
+ );
},
separatorBuilder: (BuildContext context, int index) {
- return const Divider(
- height: 1,
- color: AppColors.greyLineColor,
- );
+ return const Divider(
+ height: 1,
+ color: AppColors.greyLineColor,
+ );
},
- ));
+ ),
+ ));
}
Widget _buildDeleteBtn(String keyId) {
@@ -269,6 +270,9 @@ class _ElectronicKeyListPageState extends State {
} else if (keyStatusFlag == 110410) {
//已重置
keyStatus = '已重置';
+ } else if (keyStatusFlag == 110412) {
+ //已过期
+ keyStatus = '已过期';
}
return keyStatus;
diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart
index 7d7577da..0aefe1b4 100644
--- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart
+++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart
@@ -6,6 +6,7 @@ import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
+import 'package:star_lock/tools/eventBusEventManage.dart';
import 'package:star_lock/translations/trans_lib.dart';
class SendElectronicKeyLogic extends BaseGetXController {
@@ -62,6 +63,9 @@ class SendElectronicKeyLogic extends BaseGetXController {
if (entity.errorCode!.codeIsSuccessful) {
print('发送电子钥匙成功');
state.isSendSuccess.value = true;
+ state.sendSucceedType.value = int.parse(state.type.value);
+ resetData();
+ eventBus.fire(ElectronicKeyListRefreshUI());
} else {
if (entity.errorCode == 425) {
//用户未注册
@@ -162,4 +166,11 @@ class SendElectronicKeyLogic extends BaseGetXController {
},
);
}
+
+ void resetData(){
+ state.emailOrPhoneController.text = "";
+ state.keyNameController.text = "";
+ state.selectEffectiveDate = '${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day} ${DateTime.now().hour}:${DateTime.now().minute}'.obs; //默认为当前时间
+ state.selectFailureDate = '${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day} ${DateTime.now().hour}:${DateTime.now().minute}'.obs; //默认为当前时间
+ }
}
diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart
index 3261aa5b..405ddfe4 100644
--- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart
+++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart
@@ -53,7 +53,7 @@ class _SendElectronicKeyPageState extends State {
}
Widget indexChangeWidget() {
- if (state.isSendSuccess.value == true) {
+ if (state.isSendSuccess.value == true && state.sendSucceedType.value.toString() == widget.type) {
return sendElectronicKeySucceed();
} else {
switch (int.parse(widget.type)) {
@@ -281,8 +281,7 @@ class _SendElectronicKeyPageState extends State {
state.failureDateTime.value.hour,
state.failureDateTime.value.minute);
//发送钥匙请求
- if (state.emailOrPhoneController.text.isNotEmpty &&
- state.keyNameController.text.isNotEmpty) {
+ if (state.emailOrPhoneController.text.isNotEmpty && state.keyNameController.text.isNotEmpty) {
if (int.parse(widget.type) == 0) {
if (!startDateTime.isBefore(endDateTime) ||
startDateTime.isAtSameMomentAs(endDateTime)) {
@@ -372,7 +371,7 @@ class _SendElectronicKeyPageState extends State {
btnName: '完成',
onClick: () {
state.isSendSuccess.value = false;
- Navigator.pop(context, true);
+ logic.resetData();
}),
SizedBox(
height: 10.h,
@@ -443,7 +442,7 @@ class _SendElectronicKeyPageState extends State {
maxLines: 1,
inputFormatters: [
FilteringTextInputFormatter.deny('\n'),
- LengthLimitingTextInputFormatter(18),
+ LengthLimitingTextInputFormatter(30),
],
// controller: _controller,
autofocus: false,
@@ -508,17 +507,20 @@ class _SendElectronicKeyPageState extends State {
// 远程开锁
Widget remoteUnlockingWidget() {
- return Column(
- children: [
- CommonItem(
- leftTitel: TranslationLoader.lanKeys!.remoteUnlockingAllowed!.tr,
- rightTitle: "",
- isHaveRightWidget: true,
- rightWidget:
- SizedBox(width: 60.w, height: 50.h, child: _remoteSwitch(true)),
- action: () {}),
- Container(height: 10.h),
- ],
+ return Visibility(
+ visible: state.keyInfo.value.lockSetting!.remoteUnlock == 1 ? true : false,
+ child: Column(
+ children: [
+ CommonItem(
+ leftTitel: TranslationLoader.lanKeys!.remoteUnlockingAllowed!.tr,
+ rightTitle: "",
+ isHaveRightWidget: true,
+ rightWidget:
+ SizedBox(width: 60.w, height: 50.h, child: _remoteSwitch(true)),
+ action: () {}),
+ Container(height: 10.h),
+ ],
+ ),
);
}
diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart
index ffd62849..ca3f0db0 100644
--- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart
+++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart
@@ -35,6 +35,8 @@ class SendElectronicKeyState {
var weekdaysList = [].obs;
var isCreateUser = false.obs; //用户未注册时传1 已注册传0
+ final sendSucceedType = 0.obs;
+
SendElectronicKeyState() {
Map map = Get.arguments;
keyInfo.value = map["keyInfo"];
diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicManageKey/sendElectronicKeyManage_tabbar.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicManageKey/sendElectronicKeyManage_tabbar.dart
index 1329f520..fc4bdabd 100644
--- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicManageKey/sendElectronicKeyManage_tabbar.dart
+++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicManageKey/sendElectronicKeyManage_tabbar.dart
@@ -38,6 +38,13 @@ class _SendElectronicKeyManageTabbarState
vsync: this,
length: _itemTabs.length,
initialIndex: widget.initialIndex);
+
+ _tabController.addListener(() {
+ // print("_tabController.animation!.value:${_tabController.animation!.value} _tabController.index:${_tabController.index}");
+ if (_tabController.animation!.value==_tabController.index){
+ FocusScope.of(context).requestFocus(FocusNode());
+ }
+ });
}
@override
@@ -54,6 +61,9 @@ class _SendElectronicKeyManageTabbarState
TabBar _tabBar() {
return TabBar(
controller: _tabController,
+ onTap: (index){
+ FocusScope.of(context).requestFocus(FocusNode());
+ },
tabs: _itemTabs.map((ItemView item) => _tab(item)).toList(),
isScrollable: true,
indicatorColor: Colors.red,
diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart
index 81f9f77e..97aafcde 100644
--- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart
+++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart
@@ -137,7 +137,10 @@ class LockDetailLogic extends BaseGetXController {
case 0x16:
// 正在开锁中...
print("${reply.commandType}正在开锁中...");
- showToast("正在开锁中...");
+ state.openLockBtnState.value = 0;
+ showToast("正在开锁中...", something: (){
+ cancelBlueConnetctToastTimer();
+ });
break;
default:
//失败
@@ -317,7 +320,7 @@ class LockDetailLogic extends BaseGetXController {
} else {
getLockNetToken();
}
-
+ // clickPushBtnAction();
break;
case 0x06:
//无权限
@@ -598,38 +601,45 @@ class LockDetailLogic extends BaseGetXController {
}
}
- // 0开锁 1长按闭锁 2密码 3卡 4指纹 5遥控 6人脸 7监控 8操作记录 9消息提醒 10设置
- clickItemBtnAction(int type){
- state.clickNextType = type;
- if (state.lockUserNo == 0) {
- // 电子钥匙lockUserNo为0 要先添加用户
- addUserConnectBlue();
- } else {
- clickPushBtnAction();
- }
- }
-
- clickPushBtnAction(){
- // 0开锁 1长按闭锁 2密码 3卡 4指纹 5遥控 6人脸 7监控 8操作记录 9消息提醒 10设置
- switch(state.clickNextType){
- case 0:
- // 开锁
- startOpenLock();
- break;
- case 1:
- // 长按闭锁
- startUnLock();
- break;
- case 2:
- // 密码
- Get.toNamed(Routers.passwordKeyListPage, arguments: {"keyInfo": state.keyInfos.value});
- break;
- case 3:
- // 卡
- Get.toNamed(Routers.passwordKeyListPage, arguments: {"keyInfo": state.keyInfos.value});
- break;
- }
- }
+ // // 0开锁 1长按闭锁 2密码 3卡 4指纹 5遥控 6人脸 7监控 8操作记录 9消息提醒 10设置
+ // clickItemBtnAction(int type){
+ // state.clickNextType = type;
+ // if (state.lockUserNo == 0) {
+ // // 电子钥匙lockUserNo为0 要先添加用户
+ // addUserConnectBlue();
+ // } else {
+ // clickPushBtnAction();
+ // }
+ // }
+ //
+ // clickPushBtnAction(){
+ // // 0开锁 1长按闭锁 2密码 3卡 4指纹 5遥控 6人脸 7监控 8操作记录 9消息提醒 10设置
+ // switch(state.clickNextType){
+ // case 0:
+ // // 开锁
+ // startOpenLock();
+ // break;
+ // case 1:
+ // // 长按闭锁
+ // startUnLock();
+ // break;
+ // case 2:
+ // // 密码
+ // Get.toNamed(Routers.passwordKeyListPage, arguments: {"keyInfo": state.keyInfos.value});
+ // break;
+ // case 3:
+ // // 卡
+ // Get.toNamed(Routers.passwordKeyListPage, arguments: {"keyInfo": state.keyInfos.value});
+ // break;
+ // case 10:
+ // // 设置
+ // Get.toNamed(Routers.lockSetPage, arguments: {
+ // "lockId": state.keyInfos.value.lockId,
+ // "isOnlyOneData": state.isOnlyOneData,
+ // });
+ // break;
+ // }
+ // }
// 获取手机联网token,根据锁设置里面获取的开锁时是否联网来判断是否调用这个接口
void getLockNetToken() async {
@@ -648,6 +658,8 @@ class LockDetailLogic extends BaseGetXController {
lockUserNo: state.lockUserNo.toString());
if (entity.errorCode!.codeIsSuccessful) {
if (state.isOpenLockNeedOnline.value == 0) {
+ state.bottomBtnisUneable.value = false;
+ eventBus.fire(RefreshLockListInfoDataEvent());
openDoorAction(1);
} else {
getLockNetToken();
diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart
index a5ca52d5..222fc0d0 100644
--- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart
+++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart
@@ -38,12 +38,15 @@ class _LockDetailPageState extends State
void initState() {
// TODO: implement initState
super.initState();
- Get.log("LockDetailPage initState1111");
+ // Get.log("LockDetailPage initState1111");
- print("LockDetailPage isOnlyOneData==${widget.isOnlyOneData}");
state.keyInfos.value = widget.lockListInfoItemEntity;
state.lockUserNo = state.keyInfos.value.lockUserNo!;
- print("state.lockUserNo==${state.lockUserNo}");
+ if (state.lockUserNo == 0) {
+ state.bottomBtnisUneable.value = true;
+ }
+ state.isOnlyOneData = widget.isOnlyOneData;
+ // print("state.lockUserNo==${state.lockUserNo}");
state.senderUserId = state.keyInfos.value.senderUserId!;
state.isAttendance.value = state.keyInfos.value.lockSetting!.attendance!;
state.isOpenLockNeedOnline.value =
@@ -153,7 +156,6 @@ class _LockDetailPageState extends State
}
Widget topWidget() {
- // KeyInfos keyInfo = widget.lockMainEntity.data!.keyInfos![0];
return Column(
children: [
SizedBox(height: 50.h),
@@ -439,24 +441,35 @@ class _LockDetailPageState extends State
// 普通用户
List getNormalWidget() {
- var showWidgetArr = [
- // 操作记录
- bottomItem('images/main/icon_main_operatingRecord.png',
- TranslationLoader.lanKeys!.operatingRecord!.tr, () {
- Get.toNamed(Routers.lockOperatingRecordPage,
- arguments: {"keyInfo": state.keyInfos.value});
- }),
+ var showWidgetArr = [];
+ // 考勤
+ if (state.isAttendance.value == 1) {
+ showWidgetArr.add(bottomItem(
+ 'images/main/icon_main_clockingIn.png',
+ TranslationLoader.lanKeys!.checkingIn!.tr,
+ state.bottomBtnisUneable.value, () {
+ Get.toNamed(Routers.checkingInListPage,
+ arguments: state.keyInfos.value);
+ }));
+ }
+ // 操作记录
+ showWidgetArr.add(bottomItem(
+ 'images/main/icon_main_operatingRecord.png',
+ TranslationLoader.lanKeys!.operatingRecord!.tr,
+ state.bottomBtnisUneable.value, () {
+ Get.toNamed(Routers.lockOperatingRecordPage,
+ arguments: {"keyInfo": state.keyInfos.value});
+ }));
+
+ // 设置
+ showWidgetArr.add(bottomItem('images/main/icon_main_set.png',
+ TranslationLoader.lanKeys!.set!.tr, state.bottomBtnisUneable.value, () {
+ Get.toNamed(Routers.lockSetPage, arguments: {
+ "lockId": state.keyInfos.value.lockId,
+ "isOnlyOneData": state.isOnlyOneData
+ });
+ }));
- // 设置
- bottomItem(
- 'images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr,
- () {
- Get.toNamed(Routers.lockSetPage, arguments: {
- "lockId": state.keyInfos.value.lockId,
- "isOnlyOneData": widget.isOnlyOneData,
- });
- }),
- ];
return showWidgetArr;
}
@@ -465,31 +478,39 @@ class _LockDetailPageState extends State
var showWidgetArr = [];
// 考勤
if (state.isAttendance.value == 1) {
- showWidgetArr.add(bottomItem('images/main/icon_main_clockingIn.png',
- TranslationLoader.lanKeys!.checkingIn!.tr, () {
+ showWidgetArr.add(bottomItem(
+ 'images/main/icon_main_clockingIn.png',
+ TranslationLoader.lanKeys!.checkingIn!.tr,
+ state.bottomBtnisUneable.value, () {
Get.toNamed(Routers.checkingInListPage,
arguments: state.keyInfos.value);
}));
}
// 电子钥匙
- showWidgetArr.add(bottomItem('images/main/icon_main_electronicKey.png',
- TranslationLoader.lanKeys!.electronicKey!.tr, () {
+ showWidgetArr.add(bottomItem(
+ 'images/main/icon_main_electronicKey.png',
+ TranslationLoader.lanKeys!.electronicKey!.tr,
+ state.bottomBtnisUneable.value, () {
Get.toNamed(Routers.electronicKeyListPage,
arguments: {"keyInfo": state.keyInfos.value});
}));
// 密码
- showWidgetArr.add(bottomItem('images/main/icon_main_password.png',
- TranslationLoader.lanKeys!.password!.tr, () {
+ showWidgetArr.add(bottomItem(
+ 'images/main/icon_main_password.png',
+ TranslationLoader.lanKeys!.password!.tr,
+ state.bottomBtnisUneable.value, () {
Get.toNamed(Routers.passwordKeyListPage,
arguments: {"keyInfo": state.keyInfos.value});
}));
// ic卡
if (state.keyInfos.value.lockFeature!.icCard == 1) {
- showWidgetArr.add(bottomItem('images/main/icon_main_icCard.png',
- TranslationLoader.lanKeys!.card!.tr, () {
+ showWidgetArr.add(bottomItem(
+ 'images/main/icon_main_icCard.png',
+ TranslationLoader.lanKeys!.card!.tr,
+ state.bottomBtnisUneable.value, () {
// logic.showToast("普通用户第一次需要在锁旁边操作哦。", something: () {
// logic.showEasyLoading();
// });
@@ -501,8 +522,10 @@ class _LockDetailPageState extends State
// 指纹
if (state.keyInfos.value.lockFeature!.fingerprint == 1) {
- showWidgetArr.add(bottomItem('images/main/icon_main_fingerprint.png',
- TranslationLoader.lanKeys!.fingerprint!.tr, () {
+ showWidgetArr.add(bottomItem(
+ 'images/main/icon_main_fingerprint.png',
+ TranslationLoader.lanKeys!.fingerprint!.tr,
+ state.bottomBtnisUneable.value, () {
Get.toNamed(Routers.fingerprintListPage, arguments: {
"lockId": state.keyInfos.value.lockId,
});
@@ -511,8 +534,10 @@ class _LockDetailPageState extends State
// 遥控
if (state.keyInfos.value.lockFeature!.bluetoothRemoteControl == 1) {
- showWidgetArr.add(bottomItem('images/main/icon_main_remoteControl.png',
- TranslationLoader.lanKeys!.remoteControl!.tr, () {
+ showWidgetArr.add(bottomItem(
+ 'images/main/icon_main_remoteControl.png',
+ TranslationLoader.lanKeys!.remoteControl!.tr,
+ state.bottomBtnisUneable.value, () {
Get.toNamed(Routers.remoteControlListPage);
}));
}
@@ -520,8 +545,10 @@ class _LockDetailPageState extends State
//可视对讲门锁新增->人脸
if (state.keyInfos.value.lockFeature!.d3Face == 1) {
showWidgetArr.add(
- bottomItem('images/main/icon_face.png',
- TranslationLoader.lanKeys!.humanFace!.tr, () {
+ bottomItem(
+ 'images/main/icon_face.png',
+ TranslationLoader.lanKeys!.humanFace!.tr,
+ state.bottomBtnisUneable.value, () {
Get.toNamed(Routers.faceList, arguments: {
"lockId": state.keyInfos.value.lockId,
}); // Toast.show(msg: "功能暂未开放");
@@ -532,8 +559,10 @@ class _LockDetailPageState extends State
//可视对讲门锁新增->监控
if (state.keyInfos.value.lockFeature!.videoIntercom == 1) {
showWidgetArr.add(
- bottomItem('images/main/icon_catEyes.png',
- TranslationLoader.lanKeys!.monitoring!.tr, () {
+ bottomItem(
+ 'images/main/icon_catEyes.png',
+ TranslationLoader.lanKeys!.monitoring!.tr,
+ state.bottomBtnisUneable.value, () {
Get.toNamed(Routers.realTimePicturePage, arguments: {
"lockName": state.keyInfos.value.lockName,
"isMonitoring": true
@@ -542,40 +571,56 @@ class _LockDetailPageState extends State
);
}
- var endWiddget = [
- // 授权管理员
- bottomItem('images/main/icon_main_authorizedAdmin.png',
- TranslationLoader.lanKeys!.authorizedAdmin!.tr, () {
+ // 授权管理员
+ if (state.keyInfos.value.isLockOwner == 1) {
+ showWidgetArr.add(bottomItem(
+ 'images/main/icon_main_authorizedAdmin.png',
+ TranslationLoader.lanKeys!.authorizedAdmin!.tr,
+ state.bottomBtnisUneable.value, () {
Get.toNamed(Routers.authorizedAdminListPage,
arguments: {"keyInfo": state.keyInfos.value});
- }),
+ }));
+ }
+ // bottomItem('images/main/icon_main_authorizedAdmin.png', TranslationLoader.lanKeys!.authorizedAdmin!.tr, state.bottomBtnisUneable.value, () {
+ // Get.toNamed(Routers.authorizedAdminListPage,
+ // arguments: {"keyInfo": state.keyInfos.value});
+ // })
+
+ var endWiddget = [
// 操作记录
- bottomItem('images/main/icon_main_operatingRecord.png',
- TranslationLoader.lanKeys!.operatingRecord!.tr, () {
+ bottomItem(
+ 'images/main/icon_main_operatingRecord.png',
+ TranslationLoader.lanKeys!.operatingRecord!.tr,
+ state.bottomBtnisUneable.value, () {
// Get.toNamed(Routers.lockOperatingRecordPage,
// arguments: {"keyInfo": state.keyInfos.value});
Get.toNamed(Routers.doorLockLogPage,
arguments: {"keyInfo": state.keyInfos.value});
}),
// 视频日志
- bottomItem('images/main/icon_lockDetail_videoLog.png',
- TranslationLoader.lanKeys!.videoLog!.tr, () {
+ bottomItem(
+ 'images/main/icon_lockDetail_videoLog.png',
+ TranslationLoader.lanKeys!.videoLog!.tr,
+ state.bottomBtnisUneable.value, () {
//视频日志
Get.toNamed(Routers.videoLogPage);
}),
// 消息提醒
- bottomItem('images/main/icon_lockDetail_messageReminding.png',
- TranslationLoader.lanKeys!.messageReminding!.tr, () {
+ bottomItem(
+ 'images/main/icon_lockDetail_messageReminding.png',
+ TranslationLoader.lanKeys!.messageReminding!.tr,
+ state.bottomBtnisUneable.value, () {
Get.toNamed(Routers.msgNotificationPage);
}),
// 设置
bottomItem(
- 'images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr,
- () {
- // BlueManage().stopScan();
+ 'images/main/icon_main_set.png',
+ TranslationLoader.lanKeys!.set!.tr,
+ state.bottomBtnisUneable.value, () {
+ // logic.clickItemBtnAction(10);
Get.toNamed(Routers.lockSetPage, arguments: {
"lockId": state.keyInfos.value.lockId,
- "isOnlyOneData": widget.isOnlyOneData,
+ "isOnlyOneData": state.isOnlyOneData,
});
}),
];
@@ -583,11 +628,17 @@ class _LockDetailPageState extends State
return showWidgetArr;
}
- Widget bottomItem(String iconUrl, String name, Function() onClick) {
+ //
+ Widget bottomItem(
+ String iconUrl, String name, bool isForbidden, Function() onClick) {
var width = 42.w;
var height = 42.h;
return GestureDetector(
- onTap: onClick,
+ onTap: isForbidden
+ ? () {
+ logic.showToast("请在锁旁边完成第一次开锁");
+ }
+ : onClick,
child: Container(
// height: 300.h,
color: Colors.white,
@@ -596,15 +647,24 @@ class _LockDetailPageState extends State
children: [
SizedBox(
width: width,
- height: height,
+ height:
+ height, // isForbidden ? "${iconUrl}_uneable.png" :"${iconUrl}.png"
child: Image.asset(iconUrl,
- width: width, height: height, fit: BoxFit.fitWidth),
+ width: width,
+ height: height,
+ color: isForbidden
+ ? AppColors.lockDetailBottomBtnUneable
+ : AppColors.mainColor,
+ fit: BoxFit.fitWidth),
),
SizedBox(height: 10.w),
Expanded(
child: Text(name,
style: TextStyle(
- fontSize: 20.sp, color: AppColors.blackColor),
+ fontSize: 20.sp,
+ color: isForbidden
+ ? AppColors.lockDetailBottomBtnUneable
+ : AppColors.blackColor),
textAlign: TextAlign.center))
],
)),
@@ -685,7 +745,7 @@ class _LockDetailPageState extends State
child: Column(
children: [
Text(
- widget.lockListInfoItemEntity.lockAlias!,
+ state.keyInfos.value.lockAlias!,
style: TextStyle(
color: AppColors.placeholderTextColor, fontSize: 24.sp),
),
diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart
index 7438c7b2..b088909b 100644
--- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart
+++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart
@@ -21,6 +21,7 @@ class LockDetailState {
String lockNetToken = "";
var lockUserNo = 0;
var senderUserId = 0;
+ var isOnlyOneData = false;
var isAttendance = 0.obs;// 是否开启考勤
var isOpenLockNeedOnline = 0.obs; // APP开锁时是否需联网
@@ -35,8 +36,7 @@ class LockDetailState {
var iSOpenLock = true.obs; // 是开锁还是关锁
Timer? closedUnlockSuccessfulTimer;
- // 0开锁 1长按闭锁 2密码 3卡 4指纹 5遥控 6人脸 7监控 8操作记录 9消息提醒 10设置
- var clickNextType = 0;
+ var bottomBtnisUneable = false.obs; // 是否不可用
//过渡动画控制器
late AnimationController animationController;
diff --git a/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart b/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart
index 2cabfc33..ded8cae4 100644
--- a/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart
+++ b/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart
@@ -34,7 +34,8 @@ class _LockOperatingRecordPageState extends State {
haveBack: true,
backgroundColor: AppColors.mainColor,
actionsList: [
- IconButton(
+ (state.keyInfos.value.isLockOwner == 1 || state.keyInfos.value.keyRight == 1)
+ ? IconButton(
icon: Image.asset(
'images/icon_bar_more.png',
height: 30.h,
@@ -63,7 +64,8 @@ class _LockOperatingRecordPageState extends State {
logic.showToast("演示模式");
}
},
- ),
+ )
+ : Container(),
],
),
body: Column(
diff --git a/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart
index 0d87eac7..411a0f81 100644
--- a/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart
+++ b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart
@@ -91,6 +91,7 @@ class _BasicInformationPageState extends State {
if (data != null) {
setState(() {
state.lockBasicInfo.value = data["lockBasicInfo"];
+ print("state.lockBasicInfo.value.lockAlias:${state.lockBasicInfo.value.lockAlias}");
});
}
})),
@@ -111,8 +112,7 @@ class _BasicInformationPageState extends State {
});
})),
Visibility(
- visible: (state.lockBasicInfo.value.isLockOwner == 1 ||
- state.lockBasicInfo.value.keyRight == 1)
+ visible: state.lockBasicInfo.value.isLockOwner == 1
? true
: false,
child: CommonItem(
diff --git a/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_logic.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_logic.dart
index 4bcae544..1e5b66a9 100644
--- a/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_logic.dart
+++ b/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_logic.dart
@@ -16,8 +16,8 @@ class EditLockNameLogic extends BaseGetXController{
lockId: state.lockSetInfoData.value.lockId.toString(),
lockName:state.changeLockNameController.text);
if (entity.errorCode!.codeIsSuccessful) {
+ state.lockBasicInfo.value.lockAlias = state.changeLockNameController.text;
showToast("修改成功", something: (){
- state.lockBasicInfo.value.lockAlias = state.changeLockNameController.text;
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(3, state.lockBasicInfo.value.lockAlias!));
eventBus.fire(RefreshLockListInfoDataEvent());
});
diff --git a/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart
index 8c4bb3bb..e6922ced 100644
--- a/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart
+++ b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart
@@ -330,7 +330,7 @@ class _LockSetPageState extends State with RouteAware {
}))),
// 重置键
Obx(() => Visibility(
- visible: state.lockFeature.value.resetSwitch == 1 ? true : false,
+ visible: (state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.resetSwitch == 1) ? true : false,
child: CommonItem(
leftTitel: TranslationLoader.lanKeys!.resetButton!.tr,
rightTitle: (state.lockSettingInfo.value.resetSwitch ?? 0) == 1
@@ -470,7 +470,7 @@ class _LockSetPageState extends State with RouteAware {
// 考勤
Obx(
() => Visibility(
- visible: state.lockFeature.value.attendance == 1 ? true : false,
+ visible: (state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.attendance == 1) ? true : false,
child: CommonItem(
leftTitel: TranslationLoader.lanKeys!.checkingIn!.tr,
rightTitle: "",
@@ -481,7 +481,7 @@ class _LockSetPageState extends State with RouteAware {
// 开锁提醒
Obx(
() => Visibility(
- visible: state.lockFeature.value.unlockReminder == 1 ? true : false,
+ visible: state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.unlockReminder == 1 ? true : false,
child: CommonItem(
leftTitel: TranslationLoader.lanKeys!.unlockReminder!.tr,
rightTitle: "",
@@ -492,7 +492,7 @@ class _LockSetPageState extends State with RouteAware {
// APP开锁时是否需联网
Obx(
() => Visibility(
- visible: state.lockFeature.value.appUnlockOnline == 1 ? true : false,
+ visible: state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.appUnlockOnline == 1 ? true : false,
child: CommonItem(
leftTitel: TranslationLoader
.lanKeys!.whetherInternetRequiredWhenUnlocking!.tr,
diff --git a/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart
index 766b5243..3defb3ae 100644
--- a/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart
+++ b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart
@@ -23,13 +23,13 @@ class RemoteUnlockingLogic extends BaseGetXController{
remoteUnlock:state.remoteEnable.value == 1 ? 0 : 1
);
if(entity.errorCode!.codeIsSuccessful){
- eventBus.fire(RefreshLockListInfoDataEvent());
-
- state.remoteEnable.value = state.remoteEnable.value == 1 ? 0 : 1;
- state.lockSetInfoData.value.lockSettingInfo!.remoteUnlock = state.remoteEnable.value;
- print("state.remoteEnable.value:${state.remoteEnable.value} state.getKeyInfosData.value.remoteEnable:${state.lockSetInfoData.value.lockSettingInfo!.remoteUnlock}");
- eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
- showToast("操作成功");
+ showToast("操作成功", something: (){
+ eventBus.fire(RefreshLockListInfoDataEvent());
+ state.remoteEnable.value = state.remoteEnable.value == 1 ? 0 : 1;
+ state.lockSetInfoData.value.lockSettingInfo!.remoteUnlock = state.remoteEnable.value;
+ print("state.remoteEnable.value:${state.remoteEnable.value} state.getKeyInfosData.value.remoteEnable:${state.lockSetInfoData.value.lockSettingInfo!.remoteUnlock}");
+ eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
+ });
}
}
diff --git a/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart b/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart
index e62dc307..1b73dff5 100644
--- a/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart
+++ b/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart
@@ -41,6 +41,7 @@ class PasswordKeyListLogic extends BaseGetXController {
if (entity.errorCode!.codeIsSuccessful) {
print("重置电子钥匙成功啦啦啦啦啦");
showToast("重置成功");
+ pageNo = 1;
mockNetworkDataRequest();
}
}
@@ -52,6 +53,7 @@ class PasswordKeyListLogic extends BaseGetXController {
.deleteKeyboardPwd(lockId, keyboardPwdId, deleteType);
if (entity.errorCode!.codeIsSuccessful) {
showToast("删除成功");
+ pageNo = 1;
mockNetworkDataRequest();
}
}
@@ -146,6 +148,7 @@ class PasswordKeyListLogic extends BaseGetXController {
void _getPasswordListRefreshUIAction() {
// 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus
_getPasswordListRefreshUIEvent = eventBus.on().listen((event) {
+ pageNo = 1;
mockNetworkDataRequest();
});
}
diff --git a/star_lock/lib/main_dev.dart b/star_lock/lib/main_dev.dart
new file mode 100644
index 00000000..c9275a23
--- /dev/null
+++ b/star_lock/lib/main_dev.dart
@@ -0,0 +1,8 @@
+import 'flavors.dart';
+
+import 'main.dart' as runner;
+
+Future main() async {
+ F.appFlavor = Flavor.dev;
+ await runner.main();
+}
diff --git a/star_lock/lib/main_pre.dart b/star_lock/lib/main_pre.dart
new file mode 100644
index 00000000..d2e9fed6
--- /dev/null
+++ b/star_lock/lib/main_pre.dart
@@ -0,0 +1,8 @@
+import 'flavors.dart';
+
+import 'main.dart' as runner;
+
+Future main() async {
+ F.appFlavor = Flavor.pre;
+ await runner.main();
+}
diff --git a/star_lock/lib/main_sky.dart b/star_lock/lib/main_sky.dart
new file mode 100644
index 00000000..ab526bfb
--- /dev/null
+++ b/star_lock/lib/main_sky.dart
@@ -0,0 +1,8 @@
+import 'flavors.dart';
+
+import 'main.dart' as runner;
+
+Future main() async {
+ F.appFlavor = Flavor.sky;
+ await runner.main();
+}
diff --git a/star_lock/lib/main_xhj.dart b/star_lock/lib/main_xhj.dart
new file mode 100644
index 00000000..8f92a4f0
--- /dev/null
+++ b/star_lock/lib/main_xhj.dart
@@ -0,0 +1,8 @@
+import 'flavors.dart';
+
+import 'main.dart' as runner;
+
+Future main() async {
+ F.appFlavor = Flavor.xhj;
+ await runner.main();
+}
diff --git a/star_lock/lib/mine/about/about_page.dart b/star_lock/lib/mine/about/about_page.dart
index 82283c67..a9d58280 100644
--- a/star_lock/lib/mine/about/about_page.dart
+++ b/star_lock/lib/mine/about/about_page.dart
@@ -5,6 +5,7 @@ import 'package:star_lock/appRouters.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import '../../app_settings/app_colors.dart';
+import '../../flavors.dart';
import '../../tools/commonItem.dart';
import '../../tools/titleAppBar.dart';
import '../../translations/trans_lib.dart';
@@ -38,12 +39,12 @@ class _AboutPageState extends State {
),
SizedBox(height: 20.h),
Text(
- "星锁 1.0.0.09(preRelease-20240126-1)",
+ "${F.title} 1.0.0.09(preRelease-20240126-1)",
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor),
),
SizedBox(height: 20.h),
Text(
- Api.baseAddress,
+ F.apiPrefix,
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor),
),
SizedBox(
diff --git a/star_lock/lib/mine/message/messageList/messageList_page.dart b/star_lock/lib/mine/message/messageList/messageList_page.dart
index 30aa376e..4567aaac 100644
--- a/star_lock/lib/mine/message/messageList/messageList_page.dart
+++ b/star_lock/lib/mine/message/messageList/messageList_page.dart
@@ -1,4 +1,3 @@
-import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
@@ -6,7 +5,6 @@ import 'package:star_lock/tools/noData.dart';
import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart';
-import '../../../network/api_repository.dart';
import '../../../tools/EasyRefreshTool.dart';
import '../../../tools/dateTool.dart';
import '../../../tools/titleAppBar.dart';
@@ -79,7 +77,7 @@ class _MessageListPageState extends State with TickerProviderSt
),
],
),
- child: _selectGatewayListListItem(messageItemEntity, () {
+ child: _messageListItem(messageItemEntity, () {
Get.toNamed(Routers.messageDetailPage, arguments: {"messageItemEntity": messageItemEntity});
}),
);
@@ -90,51 +88,51 @@ class _MessageListPageState extends State with TickerProviderSt
);
}
- Widget _selectGatewayListListItem(MessageItemEntity messageItemEntity, Function() action) {
+ Widget _messageListItem(MessageItemEntity messageItemEntity, Function() action) {
return GestureDetector(
onTap: action,
child: Container(
height: 90.h,
+ width: 1.sw,
margin: EdgeInsets.only(bottom: 2.h),
- // padding:
- // EdgeInsets.only(left: 10.w, right: 20.w, top: 20.h, bottom: 20.h),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.w),
),
- child: Row(
- children: [
- SizedBox(
- width: 20.w,
- ),
- Expanded(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
+ child: Container(
+ width: 1.sw,
+ margin: EdgeInsets.only(left: 20.w, right: 20.w),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Row(
children: [
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Text(
+ SizedBox(
+ width: 1.sw - 20.w*2,
+ child: Flexible(
+ child: Text(
messageItemEntity.data!,
+ maxLines: 1,
+ overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 22.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor),
),
- ],
+ ),
),
- SizedBox(height: 10.h),
- Row(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- // Image.asset('images/mine/icon_mine_gatewaySignal_strong.png', width: 40.w, height: 40.w,),
- // SizedBox(width: 10.w,),
- Text(DateTool().dateToYMDHNString(messageItemEntity.createdAt!.toString()), style: TextStyle(fontSize: 18.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor)),
- ],
- ),
- SizedBox(width: 20.h),
],
),
- )
- ],
+ SizedBox(height: 10.h),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ // Image.asset('images/mine/icon_mine_gatewaySignal_strong.png', width: 40.w, height: 40.w,),
+ // SizedBox(width: 10.w,),
+ Text(DateTool().dateToYMDHNString(messageItemEntity.createdAt!.toString()), style: TextStyle(fontSize: 18.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor)),
+ ],
+ ),
+ SizedBox(width: 20.h),
+ ],
+ ),
),
),
);
diff --git a/star_lock/lib/network/api.dart b/star_lock/lib/network/api.dart
index 0f0096cc..2731df5b 100644
--- a/star_lock/lib/network/api.dart
+++ b/star_lock/lib/network/api.dart
@@ -1,11 +1,4 @@
abstract class Api {
- // static String baseAddress = "https://pre.lock.star-lock.cn"; //预发布环境
- static String baseAddress = "https://dev.lock.star-lock.cn"; //联调环境
- // static String baseAddress = "http://192.168.1.15:8022"; //谢总本地
- // static String baseAddress = "https://ge.lock.star-lock.cn"; //葛工开发环境地址
-
- final String baseUrl = "$baseAddress/api";
-
// 登录注册
final String getVerificationCodeUrl = '/user/sendValidationCode';
final String registerUrl = '/user/register';
diff --git a/star_lock/lib/network/api_provider_base.dart b/star_lock/lib/network/api_provider_base.dart
index fcbb8ab5..668add51 100644
--- a/star_lock/lib/network/api_provider_base.dart
+++ b/star_lock/lib/network/api_provider_base.dart
@@ -2,6 +2,7 @@ import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import '../appRouters.dart';
+import '../flavors.dart';
import 'api.dart';
import 'request_interceptor.dart';
import 'request_interceptor_log.dart';
@@ -11,7 +12,7 @@ import 'response_interceptor_log.dart';
class BaseProvider extends GetConnect with Api {
@override
void onInit() {
- httpClient.baseUrl = baseUrl;
+ httpClient.baseUrl = '${F.apiPrefix}/api';
httpClient.addRequestModifier(requestInterceptor);
httpClient.addResponseModifier(responseInterceptor);
httpClient.addRequestModifier(requestLogInterceptor);
@@ -32,7 +33,7 @@ class BaseProvider extends GetConnect with Api {
// print("post: url:${url} body:${body} contentType:${contentType} headers:${headers} query:${query}");
if (isUnShowLoading == false) EasyLoading.show();
// print('请求url======>$url');
- // print('请求body体======>$body');
+ print('请求body体======>$body');
var res = await super.post(url, body,
contentType: contentType,
headers: headers,
diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart
index 7ae6a6c8..969571e4 100644
--- a/star_lock/lib/network/api_repository.dart
+++ b/star_lock/lib/network/api_repository.dart
@@ -125,16 +125,18 @@ class ApiRepository {
//电子钥匙列表
Future electronicKeyList(
- String endDate,
- String keyId,
- String keyStatus,
- String lockId,
- String operatorUid,
- String pageNo,
- String pageSize,
- String startDate,
- String keyRight,
- String searchStr) async {
+ {
+ required String endDate,
+ required String keyId,
+ required String keyStatus,
+ required String lockId,
+ required String operatorUid,
+ required String pageNo,
+ required String pageSize,
+ required String startDate,
+ required String keyRight,
+ required String searchStr
+ }) async {
final res = await apiProvider.electronicKeyList(endDate, keyId, keyStatus,
lockId, operatorUid, pageNo, pageSize, startDate, keyRight, searchStr);
return ElectronicKeyListEntity.fromJson(res.body);
diff --git a/star_lock/lib/tools/eventBusEventManage.dart b/star_lock/lib/tools/eventBusEventManage.dart
index 72c71f27..eac42f8b 100644
--- a/star_lock/lib/tools/eventBusEventManage.dart
+++ b/star_lock/lib/tools/eventBusEventManage.dart
@@ -89,3 +89,8 @@ class GetPasswordListRefreshUI {
class ReadMessageRefreshUI {
ReadMessageRefreshUI();
}
+
+/// 刷新电子钥匙列表
+class ElectronicKeyListRefreshUI {
+ ElectronicKeyListRefreshUI();
+}
diff --git a/star_lock/linux/.gitignore b/star_lock/linux/.gitignore
deleted file mode 100644
index d3896c98..00000000
--- a/star_lock/linux/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-flutter/ephemeral
diff --git a/star_lock/linux/CMakeLists.txt b/star_lock/linux/CMakeLists.txt
deleted file mode 100644
index 62853b7e..00000000
--- a/star_lock/linux/CMakeLists.txt
+++ /dev/null
@@ -1,138 +0,0 @@
-# Project-level configuration.
-cmake_minimum_required(VERSION 3.10)
-project(runner LANGUAGES CXX)
-
-# The name of the executable created for the application. Change this to change
-# the on-disk name of your application.
-set(BINARY_NAME "star_lock")
-# The unique GTK application identifier for this application. See:
-# https://wiki.gnome.org/HowDoI/ChooseApplicationID
-set(APPLICATION_ID "com.example.star_lock")
-
-# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
-# versions of CMake.
-cmake_policy(SET CMP0063 NEW)
-
-# Load bundled libraries from the lib/ directory relative to the binary.
-set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
-
-# Root filesystem for cross-building.
-if(FLUTTER_TARGET_PLATFORM_SYSROOT)
- set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT})
- set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
- set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
- set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
- set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
- set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-endif()
-
-# Define build configuration options.
-if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
- set(CMAKE_BUILD_TYPE "Debug" CACHE
- STRING "Flutter build mode" FORCE)
- set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
- "Debug" "Profile" "Release")
-endif()
-
-# Compilation settings that should be applied to most targets.
-#
-# Be cautious about adding new options here, as plugins use this function by
-# default. In most cases, you should add new options to specific targets instead
-# of modifying this function.
-function(APPLY_STANDARD_SETTINGS TARGET)
- target_compile_features(${TARGET} PUBLIC cxx_std_14)
- target_compile_options(${TARGET} PRIVATE -Wall -Werror)
- target_compile_options(${TARGET} PRIVATE "$<$>:-O3>")
- target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>")
-endfunction()
-
-# Flutter library and tool build rules.
-set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
-add_subdirectory(${FLUTTER_MANAGED_DIR})
-
-# System-level dependencies.
-find_package(PkgConfig REQUIRED)
-pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
-
-add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
-
-# Define the application target. To change its name, change BINARY_NAME above,
-# not the value here, or `flutter run` will no longer work.
-#
-# Any new source files that you add to the application should be added here.
-add_executable(${BINARY_NAME}
- "main.cc"
- "my_application.cc"
- "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
-)
-
-# Apply the standard set of build settings. This can be removed for applications
-# that need different build settings.
-apply_standard_settings(${BINARY_NAME})
-
-# Add dependency libraries. Add any application-specific dependencies here.
-target_link_libraries(${BINARY_NAME} PRIVATE flutter)
-target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
-
-# Run the Flutter tool portions of the build. This must not be removed.
-add_dependencies(${BINARY_NAME} flutter_assemble)
-
-# Only the install-generated bundle's copy of the executable will launch
-# correctly, since the resources must in the right relative locations. To avoid
-# people trying to run the unbundled copy, put it in a subdirectory instead of
-# the default top-level location.
-set_target_properties(${BINARY_NAME}
- PROPERTIES
- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
-)
-
-# Generated plugin build rules, which manage building the plugins and adding
-# them to the application.
-include(flutter/generated_plugins.cmake)
-
-
-# === Installation ===
-# By default, "installing" just makes a relocatable bundle in the build
-# directory.
-set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle")
-if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
- set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
-endif()
-
-# Start with a clean build bundle directory every time.
-install(CODE "
- file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\")
- " COMPONENT Runtime)
-
-set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
-set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
-
-install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
- COMPONENT Runtime)
-
-install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
- COMPONENT Runtime)
-
-install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-
-foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
- install(FILES "${bundled_library}"
- DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-endforeach(bundled_library)
-
-# Fully re-copy the assets directory on each build to avoid having stale files
-# from a previous install.
-set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
-install(CODE "
- file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
- " COMPONENT Runtime)
-install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
- DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
-
-# Install the AOT library on non-Debug builds only.
-if(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
- install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-endif()
diff --git a/star_lock/linux/flutter/CMakeLists.txt b/star_lock/linux/flutter/CMakeLists.txt
deleted file mode 100644
index d5bd0164..00000000
--- a/star_lock/linux/flutter/CMakeLists.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-# This file controls Flutter-level build steps. It should not be edited.
-cmake_minimum_required(VERSION 3.10)
-
-set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
-
-# Configuration provided via flutter tool.
-include(${EPHEMERAL_DIR}/generated_config.cmake)
-
-# TODO: Move the rest of this into files in ephemeral. See
-# https://github.com/flutter/flutter/issues/57146.
-
-# Serves the same purpose as list(TRANSFORM ... PREPEND ...),
-# which isn't available in 3.10.
-function(list_prepend LIST_NAME PREFIX)
- set(NEW_LIST "")
- foreach(element ${${LIST_NAME}})
- list(APPEND NEW_LIST "${PREFIX}${element}")
- endforeach(element)
- set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE)
-endfunction()
-
-# === Flutter Library ===
-# System-level dependencies.
-find_package(PkgConfig REQUIRED)
-pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
-pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
-pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
-
-set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so")
-
-# Published to parent scope for install step.
-set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
-set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
-set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
-set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE)
-
-list(APPEND FLUTTER_LIBRARY_HEADERS
- "fl_basic_message_channel.h"
- "fl_binary_codec.h"
- "fl_binary_messenger.h"
- "fl_dart_project.h"
- "fl_engine.h"
- "fl_json_message_codec.h"
- "fl_json_method_codec.h"
- "fl_message_codec.h"
- "fl_method_call.h"
- "fl_method_channel.h"
- "fl_method_codec.h"
- "fl_method_response.h"
- "fl_plugin_registrar.h"
- "fl_plugin_registry.h"
- "fl_standard_message_codec.h"
- "fl_standard_method_codec.h"
- "fl_string_codec.h"
- "fl_value.h"
- "fl_view.h"
- "flutter_linux.h"
-)
-list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/")
-add_library(flutter INTERFACE)
-target_include_directories(flutter INTERFACE
- "${EPHEMERAL_DIR}"
-)
-target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}")
-target_link_libraries(flutter INTERFACE
- PkgConfig::GTK
- PkgConfig::GLIB
- PkgConfig::GIO
-)
-add_dependencies(flutter flutter_assemble)
-
-# === Flutter tool backend ===
-# _phony_ is a non-existent file to force this command to run every time,
-# since currently there's no way to get a full input/output list from the
-# flutter tool.
-add_custom_command(
- OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
- ${CMAKE_CURRENT_BINARY_DIR}/_phony_
- COMMAND ${CMAKE_COMMAND} -E env
- ${FLUTTER_TOOL_ENVIRONMENT}
- "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
- ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
- VERBATIM
-)
-add_custom_target(flutter_assemble DEPENDS
- "${FLUTTER_LIBRARY}"
- ${FLUTTER_LIBRARY_HEADERS}
-)
diff --git a/star_lock/linux/flutter/generated_plugin_registrant.cc b/star_lock/linux/flutter/generated_plugin_registrant.cc
deleted file mode 100644
index 05d9a9b9..00000000
--- a/star_lock/linux/flutter/generated_plugin_registrant.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-//
-// Generated file. Do not edit.
-//
-
-// clang-format off
-
-#include "generated_plugin_registrant.h"
-
-#include
-#include
-#include
-#include
-
-void fl_register_plugins(FlPluginRegistry* registry) {
- g_autoptr(FlPluginRegistrar) aj_captcha_flutter_registrar =
- fl_plugin_registry_get_registrar_for_plugin(registry, "AjCaptchaFlutterPlugin");
- aj_captcha_flutter_plugin_register_with_registrar(aj_captcha_flutter_registrar);
- g_autoptr(FlPluginRegistrar) audioplayers_linux_registrar =
- fl_plugin_registry_get_registrar_for_plugin(registry, "AudioplayersLinuxPlugin");
- audioplayers_linux_plugin_register_with_registrar(audioplayers_linux_registrar);
- g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
- fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
- file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
- g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
- fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
- url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
-}
diff --git a/star_lock/linux/flutter/generated_plugin_registrant.h b/star_lock/linux/flutter/generated_plugin_registrant.h
deleted file mode 100644
index e0f0a47b..00000000
--- a/star_lock/linux/flutter/generated_plugin_registrant.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// Generated file. Do not edit.
-//
-
-// clang-format off
-
-#ifndef GENERATED_PLUGIN_REGISTRANT_
-#define GENERATED_PLUGIN_REGISTRANT_
-
-#include
-
-// Registers Flutter plugins.
-void fl_register_plugins(FlPluginRegistry* registry);
-
-#endif // GENERATED_PLUGIN_REGISTRANT_
diff --git a/star_lock/linux/flutter/generated_plugins.cmake b/star_lock/linux/flutter/generated_plugins.cmake
deleted file mode 100644
index b6e600e9..00000000
--- a/star_lock/linux/flutter/generated_plugins.cmake
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Generated file, do not edit.
-#
-
-list(APPEND FLUTTER_PLUGIN_LIST
- aj_captcha_flutter
- audioplayers_linux
- file_selector_linux
- url_launcher_linux
-)
-
-list(APPEND FLUTTER_FFI_PLUGIN_LIST
-)
-
-set(PLUGIN_BUNDLED_LIBRARIES)
-
-foreach(plugin ${FLUTTER_PLUGIN_LIST})
- add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
- target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
- list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
- list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
-endforeach(plugin)
-
-foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
- add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
- list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
-endforeach(ffi_plugin)
diff --git a/star_lock/linux/main.cc b/star_lock/linux/main.cc
deleted file mode 100644
index e7c5c543..00000000
--- a/star_lock/linux/main.cc
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "my_application.h"
-
-int main(int argc, char** argv) {
- g_autoptr(MyApplication) app = my_application_new();
- return g_application_run(G_APPLICATION(app), argc, argv);
-}
diff --git a/star_lock/linux/my_application.cc b/star_lock/linux/my_application.cc
deleted file mode 100644
index 4e599fb3..00000000
--- a/star_lock/linux/my_application.cc
+++ /dev/null
@@ -1,104 +0,0 @@
-#include "my_application.h"
-
-#include
-#ifdef GDK_WINDOWING_X11
-#include
-#endif
-
-#include "flutter/generated_plugin_registrant.h"
-
-struct _MyApplication {
- GtkApplication parent_instance;
- char** dart_entrypoint_arguments;
-};
-
-G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
-
-// Implements GApplication::activate.
-static void my_application_activate(GApplication* application) {
- MyApplication* self = MY_APPLICATION(application);
- GtkWindow* window =
- GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
-
- // Use a header bar when running in GNOME as this is the common style used
- // by applications and is the setup most users will be using (e.g. Ubuntu
- // desktop).
- // If running on X and not using GNOME then just use a traditional title bar
- // in case the window manager does more exotic layout, e.g. tiling.
- // If running on Wayland assume the header bar will work (may need changing
- // if future cases occur).
- gboolean use_header_bar = TRUE;
-#ifdef GDK_WINDOWING_X11
- GdkScreen* screen = gtk_window_get_screen(window);
- if (GDK_IS_X11_SCREEN(screen)) {
- const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen);
- if (g_strcmp0(wm_name, "GNOME Shell") != 0) {
- use_header_bar = FALSE;
- }
- }
-#endif
- if (use_header_bar) {
- GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
- gtk_widget_show(GTK_WIDGET(header_bar));
- gtk_header_bar_set_title(header_bar, "star_lock");
- gtk_header_bar_set_show_close_button(header_bar, TRUE);
- gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
- } else {
- gtk_window_set_title(window, "star_lock");
- }
-
- gtk_window_set_default_size(window, 1280, 720);
- gtk_widget_show(GTK_WIDGET(window));
-
- g_autoptr(FlDartProject) project = fl_dart_project_new();
- fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
-
- FlView* view = fl_view_new(project);
- gtk_widget_show(GTK_WIDGET(view));
- gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
-
- fl_register_plugins(FL_PLUGIN_REGISTRY(view));
-
- gtk_widget_grab_focus(GTK_WIDGET(view));
-}
-
-// Implements GApplication::local_command_line.
-static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) {
- MyApplication* self = MY_APPLICATION(application);
- // Strip out the first argument as it is the binary name.
- self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
-
- g_autoptr(GError) error = nullptr;
- if (!g_application_register(application, nullptr, &error)) {
- g_warning("Failed to register: %s", error->message);
- *exit_status = 1;
- return TRUE;
- }
-
- g_application_activate(application);
- *exit_status = 0;
-
- return TRUE;
-}
-
-// Implements GObject::dispose.
-static void my_application_dispose(GObject* object) {
- MyApplication* self = MY_APPLICATION(object);
- g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
- G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
-}
-
-static void my_application_class_init(MyApplicationClass* klass) {
- G_APPLICATION_CLASS(klass)->activate = my_application_activate;
- G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
- G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
-}
-
-static void my_application_init(MyApplication* self) {}
-
-MyApplication* my_application_new() {
- return MY_APPLICATION(g_object_new(my_application_get_type(),
- "application-id", APPLICATION_ID,
- "flags", G_APPLICATION_NON_UNIQUE,
- nullptr));
-}
diff --git a/star_lock/linux/my_application.h b/star_lock/linux/my_application.h
deleted file mode 100644
index 72271d5e..00000000
--- a/star_lock/linux/my_application.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef FLUTTER_MY_APPLICATION_H_
-#define FLUTTER_MY_APPLICATION_H_
-
-#include
-
-G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
- GtkApplication)
-
-/**
- * my_application_new:
- *
- * Creates a new Flutter-based application.
- *
- * Returns: a new #MyApplication.
- */
-MyApplication* my_application_new();
-
-#endif // FLUTTER_MY_APPLICATION_H_
diff --git a/star_lock/macos/.gitignore b/star_lock/macos/.gitignore
deleted file mode 100644
index 746adbb6..00000000
--- a/star_lock/macos/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-# Flutter-related
-**/Flutter/ephemeral/
-**/Pods/
-
-# Xcode-related
-**/dgph
-**/xcuserdata/
diff --git a/star_lock/macos/Flutter/Flutter-Debug.xcconfig b/star_lock/macos/Flutter/Flutter-Debug.xcconfig
deleted file mode 100644
index 4b81f9b2..00000000
--- a/star_lock/macos/Flutter/Flutter-Debug.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
-#include "ephemeral/Flutter-Generated.xcconfig"
diff --git a/star_lock/macos/Flutter/Flutter-Release.xcconfig b/star_lock/macos/Flutter/Flutter-Release.xcconfig
deleted file mode 100644
index 5caa9d15..00000000
--- a/star_lock/macos/Flutter/Flutter-Release.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
-#include "ephemeral/Flutter-Generated.xcconfig"
diff --git a/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift b/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift
deleted file mode 100644
index 84d8c391..00000000
--- a/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// Generated file. Do not edit.
-//
-
-import FlutterMacOS
-import Foundation
-
-import aj_captcha_flutter
-import audio_session
-import audioplayers_darwin
-import connectivity_plus
-import device_info_plus
-import file_selector_macos
-import flutter_pcm_sound
-import just_audio
-import network_info_plus
-import package_info_plus
-import path_provider_foundation
-import shared_preferences_foundation
-import sqflite
-import url_launcher_macos
-
-func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
- AjCaptchaFlutterPlugin.register(with: registry.registrar(forPlugin: "AjCaptchaFlutterPlugin"))
- AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin"))
- AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin"))
- ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin"))
- DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
- FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
- FlutterPcmSoundPlugin.register(with: registry.registrar(forPlugin: "FlutterPcmSoundPlugin"))
- JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin"))
- NetworkInfoPlusPlugin.register(with: registry.registrar(forPlugin: "NetworkInfoPlusPlugin"))
- FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
- PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
- SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
- SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
- UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
-}
diff --git a/star_lock/macos/Podfile b/star_lock/macos/Podfile
deleted file mode 100644
index dade8dfa..00000000
--- a/star_lock/macos/Podfile
+++ /dev/null
@@ -1,40 +0,0 @@
-platform :osx, '10.11'
-
-# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
-ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-
-project 'Runner', {
- 'Debug' => :debug,
- 'Profile' => :release,
- 'Release' => :release,
-}
-
-def flutter_root
- generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
- unless File.exist?(generated_xcode_build_settings_path)
- raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
- end
-
- File.foreach(generated_xcode_build_settings_path) do |line|
- matches = line.match(/FLUTTER_ROOT\=(.*)/)
- return matches[1].strip if matches
- end
- raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
-end
-
-require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
-
-flutter_macos_podfile_setup
-
-target 'Runner' do
- use_frameworks!
- use_modular_headers!
-
- flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
-end
-
-post_install do |installer|
- installer.pods_project.targets.each do |target|
- flutter_additional_macos_build_settings(target)
- end
-end
diff --git a/star_lock/macos/Runner.xcodeproj/project.pbxproj b/star_lock/macos/Runner.xcodeproj/project.pbxproj
deleted file mode 100644
index 00fe8982..00000000
--- a/star_lock/macos/Runner.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,572 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 51;
- objects = {
-
-/* Begin PBXAggregateTarget section */
- 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */;
- buildPhases = (
- 33CC111E2044C6BF0003C045 /* ShellScript */,
- );
- dependencies = (
- );
- name = "Flutter Assemble";
- productName = FLX;
- };
-/* End PBXAggregateTarget section */
-
-/* Begin PBXBuildFile section */
- 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
- 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
- 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
- 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
- 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 33CC111A2044C6BA0003C045;
- remoteInfo = FLX;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- 33CC110E2044A8840003C045 /* Bundle Framework */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- );
- name = "Bundle Framework";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; };
- 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; };
- 33CC10ED2044A3C60003C045 /* star_lock.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "star_lock.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; };
- 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; };
- 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; };
- 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; };
- 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; };
- 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; };
- 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; };
- 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; };
- 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; };
- 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; };
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; };
- 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 33CC10EA2044A3C60003C045 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 33BA886A226E78AF003329D5 /* Configs */ = {
- isa = PBXGroup;
- children = (
- 33E5194F232828860026EE4D /* AppInfo.xcconfig */,
- 9740EEB21CF90195004384FC /* Debug.xcconfig */,
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
- 333000ED22D3DE5D00554162 /* Warnings.xcconfig */,
- );
- path = Configs;
- sourceTree = "";
- };
- 33CC10E42044A3C60003C045 = {
- isa = PBXGroup;
- children = (
- 33FAB671232836740065AC1E /* Runner */,
- 33CEB47122A05771004F2AC0 /* Flutter */,
- 33CC10EE2044A3C60003C045 /* Products */,
- D73912EC22F37F3D000D13A0 /* Frameworks */,
- );
- sourceTree = "";
- };
- 33CC10EE2044A3C60003C045 /* Products */ = {
- isa = PBXGroup;
- children = (
- 33CC10ED2044A3C60003C045 /* star_lock.app */,
- );
- name = Products;
- sourceTree = "";
- };
- 33CC11242044D66E0003C045 /* Resources */ = {
- isa = PBXGroup;
- children = (
- 33CC10F22044A3C60003C045 /* Assets.xcassets */,
- 33CC10F42044A3C60003C045 /* MainMenu.xib */,
- 33CC10F72044A3C60003C045 /* Info.plist */,
- );
- name = Resources;
- path = ..;
- sourceTree = "";
- };
- 33CEB47122A05771004F2AC0 /* Flutter */ = {
- isa = PBXGroup;
- children = (
- 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
- 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
- 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
- 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
- );
- path = Flutter;
- sourceTree = "";
- };
- 33FAB671232836740065AC1E /* Runner */ = {
- isa = PBXGroup;
- children = (
- 33CC10F02044A3C60003C045 /* AppDelegate.swift */,
- 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
- 33E51913231747F40026EE4D /* DebugProfile.entitlements */,
- 33E51914231749380026EE4D /* Release.entitlements */,
- 33CC11242044D66E0003C045 /* Resources */,
- 33BA886A226E78AF003329D5 /* Configs */,
- );
- path = Runner;
- sourceTree = "";
- };
- D73912EC22F37F3D000D13A0 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- );
- name = Frameworks;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 33CC10EC2044A3C60003C045 /* Runner */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
- buildPhases = (
- 33CC10E92044A3C60003C045 /* Sources */,
- 33CC10EA2044A3C60003C045 /* Frameworks */,
- 33CC10EB2044A3C60003C045 /* Resources */,
- 33CC110E2044A8840003C045 /* Bundle Framework */,
- 3399D490228B24CF009A79C7 /* ShellScript */,
- );
- buildRules = (
- );
- dependencies = (
- 33CC11202044C79F0003C045 /* PBXTargetDependency */,
- );
- name = Runner;
- productName = Runner;
- productReference = 33CC10ED2044A3C60003C045 /* star_lock.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 33CC10E52044A3C60003C045 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastSwiftUpdateCheck = 0920;
- LastUpgradeCheck = 1300;
- ORGANIZATIONNAME = "";
- TargetAttributes = {
- 33CC10EC2044A3C60003C045 = {
- CreatedOnToolsVersion = 9.2;
- LastSwiftMigration = 1100;
- ProvisioningStyle = Automatic;
- SystemCapabilities = {
- com.apple.Sandbox = {
- enabled = 1;
- };
- };
- };
- 33CC111A2044C6BA0003C045 = {
- CreatedOnToolsVersion = 9.2;
- ProvisioningStyle = Manual;
- };
- };
- };
- buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */;
- compatibilityVersion = "Xcode 9.3";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 33CC10E42044A3C60003C045;
- productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 33CC10EC2044A3C60003C045 /* Runner */,
- 33CC111A2044C6BA0003C045 /* Flutter Assemble */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 33CC10EB2044A3C60003C045 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
- 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 3399D490228B24CF009A79C7 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- );
- outputFileListPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
- };
- 33CC111E2044C6BF0003C045 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- Flutter/ephemeral/FlutterInputs.xcfilelist,
- );
- inputPaths = (
- Flutter/ephemeral/tripwire,
- );
- outputFileListPaths = (
- Flutter/ephemeral/FlutterOutputs.xcfilelist,
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 33CC10E92044A3C60003C045 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
- 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
- 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 33CC11202044C79F0003C045 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */;
- targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin PBXVariantGroup section */
- 33CC10F42044A3C60003C045 /* MainMenu.xib */ = {
- isa = PBXVariantGroup;
- children = (
- 33CC10F52044A3C60003C045 /* Base */,
- );
- name = MainMenu.xib;
- path = Runner;
- sourceTree = "";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 338D0CE9231458BD00FA5F75 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CODE_SIGN_IDENTITY = "-";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.11;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = macosx;
- SWIFT_COMPILATION_MODE = wholemodule;
- SWIFT_OPTIMIZATION_LEVEL = "-O";
- };
- name = Profile;
- };
- 338D0CEA231458BD00FA5F75 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
- CODE_SIGN_STYLE = Automatic;
- COMBINE_HIDPI_IMAGES = YES;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/../Frameworks",
- );
- PROVISIONING_PROFILE_SPECIFIER = "";
- SWIFT_VERSION = 5.0;
- };
- name = Profile;
- };
- 338D0CEB231458BD00FA5F75 /* Profile */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CODE_SIGN_STYLE = Manual;
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Profile;
- };
- 33CC10F92044A3C60003C045 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CODE_SIGN_IDENTITY = "-";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.11;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = macosx;
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- };
- name = Debug;
- };
- 33CC10FA2044A3C60003C045 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CODE_SIGN_IDENTITY = "-";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.11;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = macosx;
- SWIFT_COMPILATION_MODE = wholemodule;
- SWIFT_OPTIMIZATION_LEVEL = "-O";
- };
- name = Release;
- };
- 33CC10FC2044A3C60003C045 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
- CODE_SIGN_STYLE = Automatic;
- COMBINE_HIDPI_IMAGES = YES;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/../Frameworks",
- );
- PROVISIONING_PROFILE_SPECIFIER = "";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- };
- name = Debug;
- };
- 33CC10FD2044A3C60003C045 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
- CODE_SIGN_STYLE = Automatic;
- COMBINE_HIDPI_IMAGES = YES;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/../Frameworks",
- );
- PROVISIONING_PROFILE_SPECIFIER = "";
- SWIFT_VERSION = 5.0;
- };
- name = Release;
- };
- 33CC111C2044C6BA0003C045 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CODE_SIGN_STYLE = Manual;
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Debug;
- };
- 33CC111D2044C6BA0003C045 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CODE_SIGN_STYLE = Automatic;
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 33CC10F92044A3C60003C045 /* Debug */,
- 33CC10FA2044A3C60003C045 /* Release */,
- 338D0CE9231458BD00FA5F75 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 33CC10FC2044A3C60003C045 /* Debug */,
- 33CC10FD2044A3C60003C045 /* Release */,
- 338D0CEA231458BD00FA5F75 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 33CC111C2044C6BA0003C045 /* Debug */,
- 33CC111D2044C6BA0003C045 /* Release */,
- 338D0CEB231458BD00FA5F75 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 33CC10E52044A3C60003C045 /* Project object */;
-}
diff --git a/star_lock/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/star_lock/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d98100..00000000
--- a/star_lock/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/star_lock/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/star_lock/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
deleted file mode 100644
index c1a85f2d..00000000
--- a/star_lock/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/star_lock/macos/Runner.xcworkspace/contents.xcworkspacedata b/star_lock/macos/Runner.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 1d526a16..00000000
--- a/star_lock/macos/Runner.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/star_lock/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/star_lock/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d98100..00000000
--- a/star_lock/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/star_lock/macos/Runner/AppDelegate.swift b/star_lock/macos/Runner/AppDelegate.swift
deleted file mode 100644
index d53ef643..00000000
--- a/star_lock/macos/Runner/AppDelegate.swift
+++ /dev/null
@@ -1,9 +0,0 @@
-import Cocoa
-import FlutterMacOS
-
-@NSApplicationMain
-class AppDelegate: FlutterAppDelegate {
- override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
- return true
- }
-}
diff --git a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index a2ec33f1..00000000
--- a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "images" : [
- {
- "size" : "16x16",
- "idiom" : "mac",
- "filename" : "app_icon_16.png",
- "scale" : "1x"
- },
- {
- "size" : "16x16",
- "idiom" : "mac",
- "filename" : "app_icon_32.png",
- "scale" : "2x"
- },
- {
- "size" : "32x32",
- "idiom" : "mac",
- "filename" : "app_icon_32.png",
- "scale" : "1x"
- },
- {
- "size" : "32x32",
- "idiom" : "mac",
- "filename" : "app_icon_64.png",
- "scale" : "2x"
- },
- {
- "size" : "128x128",
- "idiom" : "mac",
- "filename" : "app_icon_128.png",
- "scale" : "1x"
- },
- {
- "size" : "128x128",
- "idiom" : "mac",
- "filename" : "app_icon_256.png",
- "scale" : "2x"
- },
- {
- "size" : "256x256",
- "idiom" : "mac",
- "filename" : "app_icon_256.png",
- "scale" : "1x"
- },
- {
- "size" : "256x256",
- "idiom" : "mac",
- "filename" : "app_icon_512.png",
- "scale" : "2x"
- },
- {
- "size" : "512x512",
- "idiom" : "mac",
- "filename" : "app_icon_512.png",
- "scale" : "1x"
- },
- {
- "size" : "512x512",
- "idiom" : "mac",
- "filename" : "app_icon_1024.png",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
diff --git a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
deleted file mode 100644
index 82b6f9d9..00000000
Binary files a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and /dev/null differ
diff --git a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
deleted file mode 100644
index 13b35eba..00000000
Binary files a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and /dev/null differ
diff --git a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
deleted file mode 100644
index 0a3f5fa4..00000000
Binary files a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and /dev/null differ
diff --git a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
deleted file mode 100644
index bdb57226..00000000
Binary files a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and /dev/null differ
diff --git a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
deleted file mode 100644
index f083318e..00000000
Binary files a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and /dev/null differ
diff --git a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
deleted file mode 100644
index 326c0e72..00000000
Binary files a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and /dev/null differ
diff --git a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
deleted file mode 100644
index 2f1632cf..00000000
Binary files a/star_lock/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and /dev/null differ
diff --git a/star_lock/macos/Runner/Base.lproj/MainMenu.xib b/star_lock/macos/Runner/Base.lproj/MainMenu.xib
deleted file mode 100644
index 80e867a4..00000000
--- a/star_lock/macos/Runner/Base.lproj/MainMenu.xib
+++ /dev/null
@@ -1,343 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/star_lock/macos/Runner/Configs/AppInfo.xcconfig b/star_lock/macos/Runner/Configs/AppInfo.xcconfig
deleted file mode 100644
index 9e0b6d30..00000000
--- a/star_lock/macos/Runner/Configs/AppInfo.xcconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-// Application-level settings for the Runner target.
-//
-// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
-// future. If not, the values below would default to using the project name when this becomes a
-// 'flutter create' template.
-
-// The application's name. By default this is also the title of the Flutter window.
-PRODUCT_NAME = star_lock
-
-// The application's bundle identifier
-PRODUCT_BUNDLE_IDENTIFIER = com.example.starLock
-
-// The copyright displayed in application information
-PRODUCT_COPYRIGHT = Copyright © 2023 com.example. All rights reserved.
diff --git a/star_lock/macos/Runner/Configs/Debug.xcconfig b/star_lock/macos/Runner/Configs/Debug.xcconfig
deleted file mode 100644
index 36b0fd94..00000000
--- a/star_lock/macos/Runner/Configs/Debug.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "../../Flutter/Flutter-Debug.xcconfig"
-#include "Warnings.xcconfig"
diff --git a/star_lock/macos/Runner/Configs/Release.xcconfig b/star_lock/macos/Runner/Configs/Release.xcconfig
deleted file mode 100644
index dff4f495..00000000
--- a/star_lock/macos/Runner/Configs/Release.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "../../Flutter/Flutter-Release.xcconfig"
-#include "Warnings.xcconfig"
diff --git a/star_lock/macos/Runner/Configs/Warnings.xcconfig b/star_lock/macos/Runner/Configs/Warnings.xcconfig
deleted file mode 100644
index 42bcbf47..00000000
--- a/star_lock/macos/Runner/Configs/Warnings.xcconfig
+++ /dev/null
@@ -1,13 +0,0 @@
-WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
-GCC_WARN_UNDECLARED_SELECTOR = YES
-CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
-CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
-CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
-CLANG_WARN_PRAGMA_PACK = YES
-CLANG_WARN_STRICT_PROTOTYPES = YES
-CLANG_WARN_COMMA = YES
-GCC_WARN_STRICT_SELECTOR_MATCH = YES
-CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
-CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
-GCC_WARN_SHADOW = YES
-CLANG_WARN_UNREACHABLE_CODE = YES
diff --git a/star_lock/macos/Runner/DebugProfile.entitlements b/star_lock/macos/Runner/DebugProfile.entitlements
deleted file mode 100644
index dddb8a30..00000000
--- a/star_lock/macos/Runner/DebugProfile.entitlements
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- com.apple.security.app-sandbox
-
- com.apple.security.cs.allow-jit
-
- com.apple.security.network.server
-
-
-
diff --git a/star_lock/macos/Runner/Info.plist b/star_lock/macos/Runner/Info.plist
deleted file mode 100644
index 4789daa6..00000000
--- a/star_lock/macos/Runner/Info.plist
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIconFile
-
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- $(FLUTTER_BUILD_NAME)
- CFBundleVersion
- $(FLUTTER_BUILD_NUMBER)
- LSMinimumSystemVersion
- $(MACOSX_DEPLOYMENT_TARGET)
- NSHumanReadableCopyright
- $(PRODUCT_COPYRIGHT)
- NSMainNibFile
- MainMenu
- NSPrincipalClass
- NSApplication
-
-
diff --git a/star_lock/macos/Runner/MainFlutterWindow.swift b/star_lock/macos/Runner/MainFlutterWindow.swift
deleted file mode 100644
index 2722837e..00000000
--- a/star_lock/macos/Runner/MainFlutterWindow.swift
+++ /dev/null
@@ -1,15 +0,0 @@
-import Cocoa
-import FlutterMacOS
-
-class MainFlutterWindow: NSWindow {
- override func awakeFromNib() {
- let flutterViewController = FlutterViewController.init()
- let windowFrame = self.frame
- self.contentViewController = flutterViewController
- self.setFrame(windowFrame, display: true)
-
- RegisterGeneratedPlugins(registry: flutterViewController)
-
- super.awakeFromNib()
- }
-}
diff --git a/star_lock/macos/Runner/Release.entitlements b/star_lock/macos/Runner/Release.entitlements
deleted file mode 100644
index 852fa1a4..00000000
--- a/star_lock/macos/Runner/Release.entitlements
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- com.apple.security.app-sandbox
-
-
-
diff --git a/star_lock/pubspec.yaml b/star_lock/pubspec.yaml
index a07283ec..6e4ad906 100644
--- a/star_lock/pubspec.yaml
+++ b/star_lock/pubspec.yaml
@@ -150,6 +150,9 @@ dev_dependencies:
# rules and activating additional ones.
flutter_lints: ^2.0.0
+ # 说明文件在:flavorizr.yaml
+ flutter_flavorizr: ^2.2.1
+
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
diff --git a/star_lock/test/widget_test.dart b/star_lock/test/widget_test.dart
index 64ae1c59..1c7575bf 100644
--- a/star_lock/test/widget_test.dart
+++ b/star_lock/test/widget_test.dart
@@ -8,7 +8,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
-import 'package:star_lock/main.dart';
+import 'package:star_lock/app.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
diff --git a/star_lock/web/favicon.png b/star_lock/web/favicon.png
deleted file mode 100644
index 8aaa46ac..00000000
Binary files a/star_lock/web/favicon.png and /dev/null differ
diff --git a/star_lock/web/icons/Icon-192.png b/star_lock/web/icons/Icon-192.png
deleted file mode 100644
index b749bfef..00000000
Binary files a/star_lock/web/icons/Icon-192.png and /dev/null differ
diff --git a/star_lock/web/icons/Icon-512.png b/star_lock/web/icons/Icon-512.png
deleted file mode 100644
index 88cfd48d..00000000
Binary files a/star_lock/web/icons/Icon-512.png and /dev/null differ
diff --git a/star_lock/web/icons/Icon-maskable-192.png b/star_lock/web/icons/Icon-maskable-192.png
deleted file mode 100644
index eb9b4d76..00000000
Binary files a/star_lock/web/icons/Icon-maskable-192.png and /dev/null differ
diff --git a/star_lock/web/icons/Icon-maskable-512.png b/star_lock/web/icons/Icon-maskable-512.png
deleted file mode 100644
index d69c5669..00000000
Binary files a/star_lock/web/icons/Icon-maskable-512.png and /dev/null differ
diff --git a/star_lock/web/index.html b/star_lock/web/index.html
deleted file mode 100644
index 13f45b66..00000000
--- a/star_lock/web/index.html
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- star_lock
-
-
-
-
-
-
-
-
-
-
diff --git a/star_lock/web/manifest.json b/star_lock/web/manifest.json
deleted file mode 100644
index f3343ffb..00000000
--- a/star_lock/web/manifest.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "star_lock",
- "short_name": "star_lock",
- "start_url": ".",
- "display": "standalone",
- "background_color": "#0175C2",
- "theme_color": "#0175C2",
- "description": "A new Flutter project.",
- "orientation": "portrait-primary",
- "prefer_related_applications": false,
- "icons": [
- {
- "src": "icons/Icon-192.png",
- "sizes": "192x192",
- "type": "image/png"
- },
- {
- "src": "icons/Icon-512.png",
- "sizes": "512x512",
- "type": "image/png"
- },
- {
- "src": "icons/Icon-maskable-192.png",
- "sizes": "192x192",
- "type": "image/png",
- "purpose": "maskable"
- },
- {
- "src": "icons/Icon-maskable-512.png",
- "sizes": "512x512",
- "type": "image/png",
- "purpose": "maskable"
- }
- ]
-}
diff --git a/star_lock/windows/.gitignore b/star_lock/windows/.gitignore
deleted file mode 100644
index d492d0d9..00000000
--- a/star_lock/windows/.gitignore
+++ /dev/null
@@ -1,17 +0,0 @@
-flutter/ephemeral/
-
-# Visual Studio user-specific files.
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# Visual Studio build-related files.
-x64/
-x86/
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!*.[Cc]ache/
diff --git a/star_lock/windows/CMakeLists.txt b/star_lock/windows/CMakeLists.txt
deleted file mode 100644
index c9472223..00000000
--- a/star_lock/windows/CMakeLists.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-# Project-level configuration.
-cmake_minimum_required(VERSION 3.14)
-project(star_lock LANGUAGES CXX)
-
-# The name of the executable created for the application. Change this to change
-# the on-disk name of your application.
-set(BINARY_NAME "star_lock")
-
-# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
-# versions of CMake.
-cmake_policy(SET CMP0063 NEW)
-
-# Define build configuration option.
-get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-if(IS_MULTICONFIG)
- set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release"
- CACHE STRING "" FORCE)
-else()
- if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
- set(CMAKE_BUILD_TYPE "Debug" CACHE
- STRING "Flutter build mode" FORCE)
- set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
- "Debug" "Profile" "Release")
- endif()
-endif()
-# Define settings for the Profile build mode.
-set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
-set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
-set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}")
-set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}")
-
-# Use Unicode for all projects.
-add_definitions(-DUNICODE -D_UNICODE)
-
-# Compilation settings that should be applied to most targets.
-#
-# Be cautious about adding new options here, as plugins use this function by
-# default. In most cases, you should add new options to specific targets instead
-# of modifying this function.
-function(APPLY_STANDARD_SETTINGS TARGET)
- target_compile_features(${TARGET} PUBLIC cxx_std_17)
- target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100")
- target_compile_options(${TARGET} PRIVATE /EHsc)
- target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0")
- target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>")
-endfunction()
-
-# Flutter library and tool build rules.
-set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
-add_subdirectory(${FLUTTER_MANAGED_DIR})
-
-# Application build; see runner/CMakeLists.txt.
-add_subdirectory("runner")
-
-# Generated plugin build rules, which manage building the plugins and adding
-# them to the application.
-include(flutter/generated_plugins.cmake)
-
-
-# === Installation ===
-# Support files are copied into place next to the executable, so that it can
-# run in place. This is done instead of making a separate bundle (as on Linux)
-# so that building and running from within Visual Studio will work.
-set(BUILD_BUNDLE_DIR "$")
-# Make the "install" step default, as it's required to run.
-set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1)
-if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
- set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
-endif()
-
-set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
-set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}")
-
-install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
- COMPONENT Runtime)
-
-install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
- COMPONENT Runtime)
-
-install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-
-if(PLUGIN_BUNDLED_LIBRARIES)
- install(FILES "${PLUGIN_BUNDLED_LIBRARIES}"
- DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-endif()
-
-# Fully re-copy the assets directory on each build to avoid having stale files
-# from a previous install.
-set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
-install(CODE "
- file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
- " COMPONENT Runtime)
-install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
- DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
-
-# Install the AOT library on non-Debug builds only.
-install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
- CONFIGURATIONS Profile;Release
- COMPONENT Runtime)
diff --git a/star_lock/windows/flutter/CMakeLists.txt b/star_lock/windows/flutter/CMakeLists.txt
deleted file mode 100644
index 930d2071..00000000
--- a/star_lock/windows/flutter/CMakeLists.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-# This file controls Flutter-level build steps. It should not be edited.
-cmake_minimum_required(VERSION 3.14)
-
-set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
-
-# Configuration provided via flutter tool.
-include(${EPHEMERAL_DIR}/generated_config.cmake)
-
-# TODO: Move the rest of this into files in ephemeral. See
-# https://github.com/flutter/flutter/issues/57146.
-set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper")
-
-# === Flutter Library ===
-set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll")
-
-# Published to parent scope for install step.
-set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
-set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
-set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
-set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE)
-
-list(APPEND FLUTTER_LIBRARY_HEADERS
- "flutter_export.h"
- "flutter_windows.h"
- "flutter_messenger.h"
- "flutter_plugin_registrar.h"
- "flutter_texture_registrar.h"
-)
-list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/")
-add_library(flutter INTERFACE)
-target_include_directories(flutter INTERFACE
- "${EPHEMERAL_DIR}"
-)
-target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib")
-add_dependencies(flutter flutter_assemble)
-
-# === Wrapper ===
-list(APPEND CPP_WRAPPER_SOURCES_CORE
- "core_implementations.cc"
- "standard_codec.cc"
-)
-list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/")
-list(APPEND CPP_WRAPPER_SOURCES_PLUGIN
- "plugin_registrar.cc"
-)
-list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/")
-list(APPEND CPP_WRAPPER_SOURCES_APP
- "flutter_engine.cc"
- "flutter_view_controller.cc"
-)
-list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/")
-
-# Wrapper sources needed for a plugin.
-add_library(flutter_wrapper_plugin STATIC
- ${CPP_WRAPPER_SOURCES_CORE}
- ${CPP_WRAPPER_SOURCES_PLUGIN}
-)
-apply_standard_settings(flutter_wrapper_plugin)
-set_target_properties(flutter_wrapper_plugin PROPERTIES
- POSITION_INDEPENDENT_CODE ON)
-set_target_properties(flutter_wrapper_plugin PROPERTIES
- CXX_VISIBILITY_PRESET hidden)
-target_link_libraries(flutter_wrapper_plugin PUBLIC flutter)
-target_include_directories(flutter_wrapper_plugin PUBLIC
- "${WRAPPER_ROOT}/include"
-)
-add_dependencies(flutter_wrapper_plugin flutter_assemble)
-
-# Wrapper sources needed for the runner.
-add_library(flutter_wrapper_app STATIC
- ${CPP_WRAPPER_SOURCES_CORE}
- ${CPP_WRAPPER_SOURCES_APP}
-)
-apply_standard_settings(flutter_wrapper_app)
-target_link_libraries(flutter_wrapper_app PUBLIC flutter)
-target_include_directories(flutter_wrapper_app PUBLIC
- "${WRAPPER_ROOT}/include"
-)
-add_dependencies(flutter_wrapper_app flutter_assemble)
-
-# === Flutter tool backend ===
-# _phony_ is a non-existent file to force this command to run every time,
-# since currently there's no way to get a full input/output list from the
-# flutter tool.
-set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_")
-set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE)
-add_custom_command(
- OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
- ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN}
- ${CPP_WRAPPER_SOURCES_APP}
- ${PHONY_OUTPUT}
- COMMAND ${CMAKE_COMMAND} -E env
- ${FLUTTER_TOOL_ENVIRONMENT}
- "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat"
- windows-x64 $
- VERBATIM
-)
-add_custom_target(flutter_assemble DEPENDS
- "${FLUTTER_LIBRARY}"
- ${FLUTTER_LIBRARY_HEADERS}
- ${CPP_WRAPPER_SOURCES_CORE}
- ${CPP_WRAPPER_SOURCES_PLUGIN}
- ${CPP_WRAPPER_SOURCES_APP}
-)
diff --git a/star_lock/windows/flutter/generated_plugin_registrant.cc b/star_lock/windows/flutter/generated_plugin_registrant.cc
deleted file mode 100644
index 6d6e78c3..00000000
--- a/star_lock/windows/flutter/generated_plugin_registrant.cc
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Generated file. Do not edit.
-//
-
-// clang-format off
-
-#include "generated_plugin_registrant.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-void RegisterPlugins(flutter::PluginRegistry* registry) {
- AjCaptchaFlutterPluginCApiRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("AjCaptchaFlutterPluginCApi"));
- AudioplayersWindowsPluginRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin"));
- ConnectivityPlusWindowsPluginRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin"));
- FileSelectorWindowsRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("FileSelectorWindows"));
- PermissionHandlerWindowsPluginRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
- UrlLauncherWindowsRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("UrlLauncherWindows"));
-}
diff --git a/star_lock/windows/flutter/generated_plugin_registrant.h b/star_lock/windows/flutter/generated_plugin_registrant.h
deleted file mode 100644
index dc139d85..00000000
--- a/star_lock/windows/flutter/generated_plugin_registrant.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// Generated file. Do not edit.
-//
-
-// clang-format off
-
-#ifndef GENERATED_PLUGIN_REGISTRANT_
-#define GENERATED_PLUGIN_REGISTRANT_
-
-#include
-
-// Registers Flutter plugins.
-void RegisterPlugins(flutter::PluginRegistry* registry);
-
-#endif // GENERATED_PLUGIN_REGISTRANT_
diff --git a/star_lock/windows/flutter/generated_plugins.cmake b/star_lock/windows/flutter/generated_plugins.cmake
deleted file mode 100644
index 9dd314b5..00000000
--- a/star_lock/windows/flutter/generated_plugins.cmake
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Generated file, do not edit.
-#
-
-list(APPEND FLUTTER_PLUGIN_LIST
- aj_captcha_flutter
- audioplayers_windows
- connectivity_plus
- file_selector_windows
- permission_handler_windows
- url_launcher_windows
-)
-
-list(APPEND FLUTTER_FFI_PLUGIN_LIST
-)
-
-set(PLUGIN_BUNDLED_LIBRARIES)
-
-foreach(plugin ${FLUTTER_PLUGIN_LIST})
- add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin})
- target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
- list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
- list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
-endforeach(plugin)
-
-foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
- add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin})
- list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
-endforeach(ffi_plugin)
diff --git a/star_lock/windows/runner/CMakeLists.txt b/star_lock/windows/runner/CMakeLists.txt
deleted file mode 100644
index 17411a8a..00000000
--- a/star_lock/windows/runner/CMakeLists.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-cmake_minimum_required(VERSION 3.14)
-project(runner LANGUAGES CXX)
-
-# Define the application target. To change its name, change BINARY_NAME in the
-# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer
-# work.
-#
-# Any new source files that you add to the application should be added here.
-add_executable(${BINARY_NAME} WIN32
- "flutter_window.cpp"
- "main.cpp"
- "utils.cpp"
- "win32_window.cpp"
- "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
- "Runner.rc"
- "runner.exe.manifest"
-)
-
-# Apply the standard set of build settings. This can be removed for applications
-# that need different build settings.
-apply_standard_settings(${BINARY_NAME})
-
-# Add preprocessor definitions for the build version.
-target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"")
-target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}")
-target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}")
-target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}")
-target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}")
-
-# Disable Windows macros that collide with C++ standard library functions.
-target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX")
-
-# Add dependency libraries and include directories. Add any application-specific
-# dependencies here.
-target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app)
-target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}")
-
-# Run the Flutter tool portions of the build. This must not be removed.
-add_dependencies(${BINARY_NAME} flutter_assemble)
diff --git a/star_lock/windows/runner/Runner.rc b/star_lock/windows/runner/Runner.rc
deleted file mode 100644
index 1e1a0eea..00000000
--- a/star_lock/windows/runner/Runner.rc
+++ /dev/null
@@ -1,121 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#pragma code_page(65001)
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "winres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (United States) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#include ""winres.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_APP_ICON ICON "resources\\app_icon.ico"
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD)
-#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD
-#else
-#define VERSION_AS_NUMBER 1,0,0,0
-#endif
-
-#if defined(FLUTTER_VERSION)
-#define VERSION_AS_STRING FLUTTER_VERSION
-#else
-#define VERSION_AS_STRING "1.0.0"
-#endif
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION VERSION_AS_NUMBER
- PRODUCTVERSION VERSION_AS_NUMBER
- FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
-#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_APP
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904e4"
- BEGIN
- VALUE "CompanyName", "com.example" "\0"
- VALUE "FileDescription", "star_lock" "\0"
- VALUE "FileVersion", VERSION_AS_STRING "\0"
- VALUE "InternalName", "star_lock" "\0"
- VALUE "LegalCopyright", "Copyright (C) 2023 com.example. All rights reserved." "\0"
- VALUE "OriginalFilename", "star_lock.exe" "\0"
- VALUE "ProductName", "star_lock" "\0"
- VALUE "ProductVersion", VERSION_AS_STRING "\0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1252
- END
-END
-
-#endif // English (United States) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
diff --git a/star_lock/windows/runner/flutter_window.cpp b/star_lock/windows/runner/flutter_window.cpp
deleted file mode 100644
index b43b9095..00000000
--- a/star_lock/windows/runner/flutter_window.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "flutter_window.h"
-
-#include
-
-#include "flutter/generated_plugin_registrant.h"
-
-FlutterWindow::FlutterWindow(const flutter::DartProject& project)
- : project_(project) {}
-
-FlutterWindow::~FlutterWindow() {}
-
-bool FlutterWindow::OnCreate() {
- if (!Win32Window::OnCreate()) {
- return false;
- }
-
- RECT frame = GetClientArea();
-
- // The size here must match the window dimensions to avoid unnecessary surface
- // creation / destruction in the startup path.
- flutter_controller_ = std::make_unique(
- frame.right - frame.left, frame.bottom - frame.top, project_);
- // Ensure that basic setup of the controller was successful.
- if (!flutter_controller_->engine() || !flutter_controller_->view()) {
- return false;
- }
- RegisterPlugins(flutter_controller_->engine());
- SetChildContent(flutter_controller_->view()->GetNativeWindow());
- return true;
-}
-
-void FlutterWindow::OnDestroy() {
- if (flutter_controller_) {
- flutter_controller_ = nullptr;
- }
-
- Win32Window::OnDestroy();
-}
-
-LRESULT
-FlutterWindow::MessageHandler(HWND hwnd, UINT const message,
- WPARAM const wparam,
- LPARAM const lparam) noexcept {
- // Give Flutter, including plugins, an opportunity to handle window messages.
- if (flutter_controller_) {
- std::optional result =
- flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam,
- lparam);
- if (result) {
- return *result;
- }
- }
-
- switch (message) {
- case WM_FONTCHANGE:
- flutter_controller_->engine()->ReloadSystemFonts();
- break;
- }
-
- return Win32Window::MessageHandler(hwnd, message, wparam, lparam);
-}
diff --git a/star_lock/windows/runner/flutter_window.h b/star_lock/windows/runner/flutter_window.h
deleted file mode 100644
index 6da0652f..00000000
--- a/star_lock/windows/runner/flutter_window.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef RUNNER_FLUTTER_WINDOW_H_
-#define RUNNER_FLUTTER_WINDOW_H_
-
-#include
-#include
-
-#include
-
-#include "win32_window.h"
-
-// A window that does nothing but host a Flutter view.
-class FlutterWindow : public Win32Window {
- public:
- // Creates a new FlutterWindow hosting a Flutter view running |project|.
- explicit FlutterWindow(const flutter::DartProject& project);
- virtual ~FlutterWindow();
-
- protected:
- // Win32Window:
- bool OnCreate() override;
- void OnDestroy() override;
- LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam,
- LPARAM const lparam) noexcept override;
-
- private:
- // The project to run.
- flutter::DartProject project_;
-
- // The Flutter instance hosted by this window.
- std::unique_ptr flutter_controller_;
-};
-
-#endif // RUNNER_FLUTTER_WINDOW_H_
diff --git a/star_lock/windows/runner/main.cpp b/star_lock/windows/runner/main.cpp
deleted file mode 100644
index 98ed3594..00000000
--- a/star_lock/windows/runner/main.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include
-#include
-#include
-
-#include "flutter_window.h"
-#include "utils.h"
-
-int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
- _In_ wchar_t *command_line, _In_ int show_command) {
- // Attach to console when present (e.g., 'flutter run') or create a
- // new console when running with a debugger.
- if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) {
- CreateAndAttachConsole();
- }
-
- // Initialize COM, so that it is available for use in the library and/or
- // plugins.
- ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
-
- flutter::DartProject project(L"data");
-
- std::vector command_line_arguments =
- GetCommandLineArguments();
-
- project.set_dart_entrypoint_arguments(std::move(command_line_arguments));
-
- FlutterWindow window(project);
- Win32Window::Point origin(10, 10);
- Win32Window::Size size(1280, 720);
- if (!window.CreateAndShow(L"star_lock", origin, size)) {
- return EXIT_FAILURE;
- }
- window.SetQuitOnClose(true);
-
- ::MSG msg;
- while (::GetMessage(&msg, nullptr, 0, 0)) {
- ::TranslateMessage(&msg);
- ::DispatchMessage(&msg);
- }
-
- ::CoUninitialize();
- return EXIT_SUCCESS;
-}
diff --git a/star_lock/windows/runner/resource.h b/star_lock/windows/runner/resource.h
deleted file mode 100644
index 66a65d1e..00000000
--- a/star_lock/windows/runner/resource.h
+++ /dev/null
@@ -1,16 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by Runner.rc
-//
-#define IDI_APP_ICON 101
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 102
-#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1001
-#define _APS_NEXT_SYMED_VALUE 101
-#endif
-#endif
diff --git a/star_lock/windows/runner/resources/app_icon.ico b/star_lock/windows/runner/resources/app_icon.ico
deleted file mode 100644
index c04e20ca..00000000
Binary files a/star_lock/windows/runner/resources/app_icon.ico and /dev/null differ
diff --git a/star_lock/windows/runner/runner.exe.manifest b/star_lock/windows/runner/runner.exe.manifest
deleted file mode 100644
index a42ea768..00000000
--- a/star_lock/windows/runner/runner.exe.manifest
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- PerMonitorV2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/star_lock/windows/runner/utils.cpp b/star_lock/windows/runner/utils.cpp
deleted file mode 100644
index f5bf9fa0..00000000
--- a/star_lock/windows/runner/utils.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "utils.h"
-
-#include
-#include
-#include
-#include
-
-#include
-
-void CreateAndAttachConsole() {
- if (::AllocConsole()) {
- FILE *unused;
- if (freopen_s(&unused, "CONOUT$", "w", stdout)) {
- _dup2(_fileno(stdout), 1);
- }
- if (freopen_s(&unused, "CONOUT$", "w", stderr)) {
- _dup2(_fileno(stdout), 2);
- }
- std::ios::sync_with_stdio();
- FlutterDesktopResyncOutputStreams();
- }
-}
-
-std::vector GetCommandLineArguments() {
- // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use.
- int argc;
- wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
- if (argv == nullptr) {
- return std::vector();
- }
-
- std::vector command_line_arguments;
-
- // Skip the first argument as it's the binary name.
- for (int i = 1; i < argc; i++) {
- command_line_arguments.push_back(Utf8FromUtf16(argv[i]));
- }
-
- ::LocalFree(argv);
-
- return command_line_arguments;
-}
-
-std::string Utf8FromUtf16(const wchar_t* utf16_string) {
- if (utf16_string == nullptr) {
- return std::string();
- }
- int target_length = ::WideCharToMultiByte(
- CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
- -1, nullptr, 0, nullptr, nullptr);
- std::string utf8_string;
- if (target_length == 0 || target_length > utf8_string.max_size()) {
- return utf8_string;
- }
- utf8_string.resize(target_length);
- int converted_length = ::WideCharToMultiByte(
- CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
- -1, utf8_string.data(),
- target_length, nullptr, nullptr);
- if (converted_length == 0) {
- return std::string();
- }
- return utf8_string;
-}
diff --git a/star_lock/windows/runner/utils.h b/star_lock/windows/runner/utils.h
deleted file mode 100644
index 3879d547..00000000
--- a/star_lock/windows/runner/utils.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef RUNNER_UTILS_H_
-#define RUNNER_UTILS_H_
-
-#include
-#include
-
-// Creates a console for the process, and redirects stdout and stderr to
-// it for both the runner and the Flutter library.
-void CreateAndAttachConsole();
-
-// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string
-// encoded in UTF-8. Returns an empty std::string on failure.
-std::string Utf8FromUtf16(const wchar_t* utf16_string);
-
-// Gets the command line arguments passed in as a std::vector,
-// encoded in UTF-8. Returns an empty std::vector on failure.
-std::vector GetCommandLineArguments();
-
-#endif // RUNNER_UTILS_H_
diff --git a/star_lock/windows/runner/win32_window.cpp b/star_lock/windows/runner/win32_window.cpp
deleted file mode 100644
index c10f08dc..00000000
--- a/star_lock/windows/runner/win32_window.cpp
+++ /dev/null
@@ -1,245 +0,0 @@
-#include "win32_window.h"
-
-#include
-
-#include "resource.h"
-
-namespace {
-
-constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW";
-
-// The number of Win32Window objects that currently exist.
-static int g_active_window_count = 0;
-
-using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd);
-
-// Scale helper to convert logical scaler values to physical using passed in
-// scale factor
-int Scale(int source, double scale_factor) {
- return static_cast(source * scale_factor);
-}
-
-// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module.
-// This API is only needed for PerMonitor V1 awareness mode.
-void EnableFullDpiSupportIfAvailable(HWND hwnd) {
- HMODULE user32_module = LoadLibraryA("User32.dll");
- if (!user32_module) {
- return;
- }
- auto enable_non_client_dpi_scaling =
- reinterpret_cast(
- GetProcAddress(user32_module, "EnableNonClientDpiScaling"));
- if (enable_non_client_dpi_scaling != nullptr) {
- enable_non_client_dpi_scaling(hwnd);
- FreeLibrary(user32_module);
- }
-}
-
-} // namespace
-
-// Manages the Win32Window's window class registration.
-class WindowClassRegistrar {
- public:
- ~WindowClassRegistrar() = default;
-
- // Returns the singleton registar instance.
- static WindowClassRegistrar* GetInstance() {
- if (!instance_) {
- instance_ = new WindowClassRegistrar();
- }
- return instance_;
- }
-
- // Returns the name of the window class, registering the class if it hasn't
- // previously been registered.
- const wchar_t* GetWindowClass();
-
- // Unregisters the window class. Should only be called if there are no
- // instances of the window.
- void UnregisterWindowClass();
-
- private:
- WindowClassRegistrar() = default;
-
- static WindowClassRegistrar* instance_;
-
- bool class_registered_ = false;
-};
-
-WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr;
-
-const wchar_t* WindowClassRegistrar::GetWindowClass() {
- if (!class_registered_) {
- WNDCLASS window_class{};
- window_class.hCursor = LoadCursor(nullptr, IDC_ARROW);
- window_class.lpszClassName = kWindowClassName;
- window_class.style = CS_HREDRAW | CS_VREDRAW;
- window_class.cbClsExtra = 0;
- window_class.cbWndExtra = 0;
- window_class.hInstance = GetModuleHandle(nullptr);
- window_class.hIcon =
- LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON));
- window_class.hbrBackground = 0;
- window_class.lpszMenuName = nullptr;
- window_class.lpfnWndProc = Win32Window::WndProc;
- RegisterClass(&window_class);
- class_registered_ = true;
- }
- return kWindowClassName;
-}
-
-void WindowClassRegistrar::UnregisterWindowClass() {
- UnregisterClass(kWindowClassName, nullptr);
- class_registered_ = false;
-}
-
-Win32Window::Win32Window() {
- ++g_active_window_count;
-}
-
-Win32Window::~Win32Window() {
- --g_active_window_count;
- Destroy();
-}
-
-bool Win32Window::CreateAndShow(const std::wstring& title,
- const Point& origin,
- const Size& size) {
- Destroy();
-
- const wchar_t* window_class =
- WindowClassRegistrar::GetInstance()->GetWindowClass();
-
- const POINT target_point = {static_cast(origin.x),
- static_cast(origin.y)};
- HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST);
- UINT dpi = FlutterDesktopGetDpiForMonitor(monitor);
- double scale_factor = dpi / 96.0;
-
- HWND window = CreateWindow(
- window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE,
- Scale(origin.x, scale_factor), Scale(origin.y, scale_factor),
- Scale(size.width, scale_factor), Scale(size.height, scale_factor),
- nullptr, nullptr, GetModuleHandle(nullptr), this);
-
- if (!window) {
- return false;
- }
-
- return OnCreate();
-}
-
-// static
-LRESULT CALLBACK Win32Window::WndProc(HWND const window,
- UINT const message,
- WPARAM const wparam,
- LPARAM const lparam) noexcept {
- if (message == WM_NCCREATE) {
- auto window_struct = reinterpret_cast(lparam);
- SetWindowLongPtr(window, GWLP_USERDATA,
- reinterpret_cast(window_struct->lpCreateParams));
-
- auto that = static_cast(window_struct->lpCreateParams);
- EnableFullDpiSupportIfAvailable(window);
- that->window_handle_ = window;
- } else if (Win32Window* that = GetThisFromHandle(window)) {
- return that->MessageHandler(window, message, wparam, lparam);
- }
-
- return DefWindowProc(window, message, wparam, lparam);
-}
-
-LRESULT
-Win32Window::MessageHandler(HWND hwnd,
- UINT const message,
- WPARAM const wparam,
- LPARAM const lparam) noexcept {
- switch (message) {
- case WM_DESTROY:
- window_handle_ = nullptr;
- Destroy();
- if (quit_on_close_) {
- PostQuitMessage(0);
- }
- return 0;
-
- case WM_DPICHANGED: {
- auto newRectSize = reinterpret_cast(lparam);
- LONG newWidth = newRectSize->right - newRectSize->left;
- LONG newHeight = newRectSize->bottom - newRectSize->top;
-
- SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth,
- newHeight, SWP_NOZORDER | SWP_NOACTIVATE);
-
- return 0;
- }
- case WM_SIZE: {
- RECT rect = GetClientArea();
- if (child_content_ != nullptr) {
- // Size and position the child window.
- MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left,
- rect.bottom - rect.top, TRUE);
- }
- return 0;
- }
-
- case WM_ACTIVATE:
- if (child_content_ != nullptr) {
- SetFocus(child_content_);
- }
- return 0;
- }
-
- return DefWindowProc(window_handle_, message, wparam, lparam);
-}
-
-void Win32Window::Destroy() {
- OnDestroy();
-
- if (window_handle_) {
- DestroyWindow(window_handle_);
- window_handle_ = nullptr;
- }
- if (g_active_window_count == 0) {
- WindowClassRegistrar::GetInstance()->UnregisterWindowClass();
- }
-}
-
-Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept {
- return reinterpret_cast(
- GetWindowLongPtr(window, GWLP_USERDATA));
-}
-
-void Win32Window::SetChildContent(HWND content) {
- child_content_ = content;
- SetParent(content, window_handle_);
- RECT frame = GetClientArea();
-
- MoveWindow(content, frame.left, frame.top, frame.right - frame.left,
- frame.bottom - frame.top, true);
-
- SetFocus(child_content_);
-}
-
-RECT Win32Window::GetClientArea() {
- RECT frame;
- GetClientRect(window_handle_, &frame);
- return frame;
-}
-
-HWND Win32Window::GetHandle() {
- return window_handle_;
-}
-
-void Win32Window::SetQuitOnClose(bool quit_on_close) {
- quit_on_close_ = quit_on_close;
-}
-
-bool Win32Window::OnCreate() {
- // No-op; provided for subclasses.
- return true;
-}
-
-void Win32Window::OnDestroy() {
- // No-op; provided for subclasses.
-}
diff --git a/star_lock/windows/runner/win32_window.h b/star_lock/windows/runner/win32_window.h
deleted file mode 100644
index 17ba4311..00000000
--- a/star_lock/windows/runner/win32_window.h
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef RUNNER_WIN32_WINDOW_H_
-#define RUNNER_WIN32_WINDOW_H_
-
-#include
-
-#include
-#include
-#include
-
-// A class abstraction for a high DPI-aware Win32 Window. Intended to be
-// inherited from by classes that wish to specialize with custom
-// rendering and input handling
-class Win32Window {
- public:
- struct Point {
- unsigned int x;
- unsigned int y;
- Point(unsigned int x, unsigned int y) : x(x), y(y) {}
- };
-
- struct Size {
- unsigned int width;
- unsigned int height;
- Size(unsigned int width, unsigned int height)
- : width(width), height(height) {}
- };
-
- Win32Window();
- virtual ~Win32Window();
-
- // Creates and shows a win32 window with |title| and position and size using
- // |origin| and |size|. New windows are created on the default monitor. Window
- // sizes are specified to the OS in physical pixels, hence to ensure a
- // consistent size to will treat the width height passed in to this function
- // as logical pixels and scale to appropriate for the default monitor. Returns
- // true if the window was created successfully.
- bool CreateAndShow(const std::wstring& title,
- const Point& origin,
- const Size& size);
-
- // Release OS resources associated with window.
- void Destroy();
-
- // Inserts |content| into the window tree.
- void SetChildContent(HWND content);
-
- // Returns the backing Window handle to enable clients to set icon and other
- // window properties. Returns nullptr if the window has been destroyed.
- HWND GetHandle();
-
- // If true, closing this window will quit the application.
- void SetQuitOnClose(bool quit_on_close);
-
- // Return a RECT representing the bounds of the current client area.
- RECT GetClientArea();
-
- protected:
- // Processes and route salient window messages for mouse handling,
- // size change and DPI. Delegates handling of these to member overloads that
- // inheriting classes can handle.
- virtual LRESULT MessageHandler(HWND window,
- UINT const message,
- WPARAM const wparam,
- LPARAM const lparam) noexcept;
-
- // Called when CreateAndShow is called, allowing subclass window-related
- // setup. Subclasses should return false if setup fails.
- virtual bool OnCreate();
-
- // Called when Destroy is called.
- virtual void OnDestroy();
-
- private:
- friend class WindowClassRegistrar;
-
- // OS callback called by message pump. Handles the WM_NCCREATE message which
- // is passed when the non-client area is being created and enables automatic
- // non-client DPI scaling so that the non-client area automatically
- // responsponds to changes in DPI. All other messages are handled by
- // MessageHandler.
- static LRESULT CALLBACK WndProc(HWND const window,
- UINT const message,
- WPARAM const wparam,
- LPARAM const lparam) noexcept;
-
- // Retrieves a class instance pointer for |window|
- static Win32Window* GetThisFromHandle(HWND const window) noexcept;
-
- bool quit_on_close_ = false;
-
- // window handle for top level window.
- HWND window_handle_ = nullptr;
-
- // window handle for hosted content.
- HWND child_content_ = nullptr;
-};
-
-#endif // RUNNER_WIN32_WINDOW_H_