Merge branch 'develop_liyi' of code-internal.star-lock.cn:StarlockTeam/app-starlock into develop_liyi
This commit is contained in:
commit
e3beea01da
@ -146,9 +146,14 @@ android {
|
||||
xhj_bundle {
|
||||
dimension "flavor-type"
|
||||
applicationId "ltd.xhjcn.lock"
|
||||
|
||||
signingConfig signingConfigs.xhj_bundle
|
||||
resValue "string", "app_name", "Star Lock"
|
||||
manifestPlaceholders.JPUSH_PKGNAME = "ltd.xhjcn.lock"
|
||||
manifestPlaceholders = [
|
||||
JPUSH_PKGNAME : "ltd.xhjcn.lock",
|
||||
JPUSH_APPKEY : "5ccdb9b8d3faaae66ba5d02e",
|
||||
JPUSH_CHANNEL : "flutter_channel",
|
||||
]
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules-xhj.pro'
|
||||
}
|
||||
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "كلمات المرور غير متسقة",
|
||||
"中功率": "قوة متوسطة",
|
||||
"常规使用": "استخدام منتظم",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "بعد تشغيل البوابة ، اضغط مع الاستمرار على زر إعادة الضبط لمدة 5 ثوانٍ ، وانقر بعد ذلك عندما يومض مصباح المؤشر بالتناوب",
|
||||
"扫描设备": "جهاز المسح الضوئي",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "فشل الحذف. ربما تكون البوابة قد اختفت دون اتصال. هل تريد فرض حذف البيانات ؟",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Паролите са непоследователни",
|
||||
"中功率": "Средна мощност",
|
||||
"常规使用": "Редовна употреба",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "След като шлюзът е включен, натиснете и задръжте бутона reset за 5 секунди и щракнете върху следващия, когато индикаторната светлина мига алтернативно",
|
||||
"扫描设备": "Сканиране устройство",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Изтриването не успя. Портата може да е отишла офлайн. Искате ли да принудите изтриване на данните?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Thepasswordsare pencay",
|
||||
"中功率": "উইউমপোওয়ার",
|
||||
"常规使用": "গ্যারিউস",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "অ্যারাস্টার্টিউইসপোভেরেডন, প্রেস এবং টিপেস্টেট্রিসেট গানttonfor5sononds, এবং চক্লিক উইভেন্থে-উইন্টার",
|
||||
"扫描设备": "সিস্কান্লিভাইস",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "ডাইজেজেশনিমেরিলেড। টিভওয়েমাইয়ানভিগনোনোআরলাইন। ডো ডাউনডেটা?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "এক্ফক্লোসিস্টেম",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "ব্যান্ডোটারট্রাসেট, thelock'sferprinতা?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "ব্যান্ডোটারপ্রাসেট, নিয়ন্ত্রণের নিয়ন্ত্রণ। ডোডো ডাইভান্টটুরে?",
|
||||
"版本说明": "ভার্সনপরিচিতি",
|
||||
"版本说明": "ভার্সনপরিচিতি"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Hesla jsou nekonzistentní",
|
||||
"中功率": "Střední síla",
|
||||
"常规使用": "Pravidelné použití",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Po zapnutí brány stiskněte a podržte tlačítko reset po dobu 5 sekund a klepněte na tlačítko next",
|
||||
"扫描设备": "Skenovat zařízení",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Odstranění se nezdařilo. Brána možná byla offline. Chcete vynutit smazat data?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Adgangskoderne er inkonsekvente",
|
||||
"中功率": "Mellem effekt",
|
||||
"常规使用": "Regelmæssig anvendelse",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Når gateway er tændt, tryk og hold nulstillingsknappen i 5 sekunder, og klik Next, når indikator lys blinker skiftevist",
|
||||
"扫描设备": "Scan- enhed",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Sletning mislykkedes. Porten er måske offline. Vil du tvinge slette data?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Følg systemet",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Efter nulstilling vil låsens fingeraftryk blive slettet. Er du sikker på at du vil nulstille den?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Efter nulstilling, fjernbetjeningen af låsen vil blive slettet. Vil du nulstille den?",
|
||||
"版本说明": "Versionsbeskrivelse",
|
||||
"版本说明": "Versionsbeskrivelse"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Die Passwörter sind inkonsistent",
|
||||
"中功率": "Mittlere Leistung",
|
||||
"常规使用": "Regelmäßige Verwendung",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Nachdem das Gateway eingesc haltet ist, drücken und halten Sie die Reset-Taste für 5 Sekunden, und klicken Sie auf Weiter, wenn die Kontroll leuchte blinkt abwechselnd",
|
||||
"扫描设备": "Scan-Gerät",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Löschung fehl geschlagen. Das Gateway ist möglicher weise offline gegangen. Möchten Sie das Löschen der Daten erzwingen?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Οι κωδικοί πρόσβασης δεν είναι συνεπείς.",
|
||||
"中功率": "Μέση ισχύς",
|
||||
"常规使用": "Κανονική χρήση:",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Αφού ενεργοποιηθεί η πύλη, πατήστε και κρατήστε το κουμπί επαναφοράς για 5 δευτερόλεπτα, και κάντε κλικ Next όταν το φως δείκτη αναβοσβήνει εναλλάξα",
|
||||
"扫描设备": "Συσκευή σάρωσης",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Η διαγραφή απέτυχε. Η πύλη μπορεί να έχει εκτός λειτουργίας. Θέλετε να αναγκάσετε τη διαγραφή των δεδομένων;",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Ακολουθήστε το σύστημα",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, τα αποτυπώματα της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να το επαναφέρετε;",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, το τηλεχειριστήριο της κλειδαριάς θα διαγραφεί. Θέλεις να το επαναφέρεις;",
|
||||
"版本说明": "Περιγραφή έκδοσης",
|
||||
"版本说明": "Περιγραφή έκδοσης"
|
||||
}
|
||||
@ -217,7 +217,6 @@
|
||||
"添加网关": "Add Gateway",
|
||||
"重新通电": "Re Connect the Power",
|
||||
"指示灯": "Indicator Light",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "After the gateway is powered on, press and hold the reset button for 5 seconds, and click Next when the indicator light flashes alternately",
|
||||
"选择网关": "Choose Gateway",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "5G is not supported,.Please select a WiFi of 2.4G.",
|
||||
"WiFi密码": "WiFi Passward",
|
||||
@ -1128,5 +1127,6 @@
|
||||
"正在说话...": "Talking now...",
|
||||
"下载完成,请到相册查看": "Download completed, please go to the album to view",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "After reset, the remote control of the lock will be deleted. Do you want to reset it?",
|
||||
"版本说明": "Version description"
|
||||
"版本说明": "Version description",
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "After the gateway is powered on, press and hold the reset button for 5 seconds. Click Next when the blue indicator light flashes"
|
||||
}
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Las contraseñas son inconsistentes",
|
||||
"中功率": "Potencia media",
|
||||
"常规使用": "Uso regular",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Después de encender la puerta de enlace, mantenga presionado el botón de reinicio durante 5 segundos y haga clic en Siguiente cuando la luz indicadora parpadee alternativamente",
|
||||
"扫描设备": "Dispositivo de exploración",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Falló la eliminación. Es posible que la puerta de enlace se haya desconectado. ¿Desea forzar la eliminación de los datos?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Paroolid ei ole järjekindlad",
|
||||
"中功率": "Keskmine võimse",
|
||||
"常规使用": "Regulaarne kasutamine",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Kui värav on sisse lülitatud, vajutage ja hoidke nuppu 5 sekundit, ja klõpsa Järgmine, kui indikaator valgus vilgub vaheldumisel",
|
||||
"扫描设备": "Skaneerimisseade",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Kustutamine nurjus. Värav võis välja lülitada. Kas soovid kustutada andmed?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Süsteemi jälgimine",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku sõrmejäljed. Kas tõesti soovid see lähtestada?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku kaugjuhtimine. Kas sa tahad seda lähtestada?",
|
||||
"版本说明": "Versiooniteave",
|
||||
"版本说明": "Versiooniteave"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Salasanat ovat epäjohdonmukaiset.",
|
||||
"中功率": "Keskimääräinen teho",
|
||||
"常规使用": "Säännöllinen käyttö",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Kun portti on käytössä, paina ja pidä painiketta nollauspainiketta 5 sekunnin ajan, ja klikkaa Seuraava kun ilmaisin valo vilkkuu vuorotellensa",
|
||||
"扫描设备": "Skannauslaite",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Poisto epäonnistui. Portti on ehkä pois päältä. Haluatko pakottaa poistamaan tiedot?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Seuraa järjestelmää",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Lukon sormenjäljet poistetaan. Haluatko varmasti nollataa sen?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nollauksen jälkeen lukon kaukosäädin poistetaan. Haluatko palauttaa sen?",
|
||||
"版本说明": "Versio",
|
||||
"版本说明": "Versio"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Les mots de passe sont incohérents",
|
||||
"中功率": "Puissance moyenne",
|
||||
"常规使用": "Utilisation régulière",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Une fois la passerelle allumée, appuyez et maintenez enfoncé le bouton de réinitialisation pendant 5 secondes, puis cliquez sur Suivant lorsque le voyant clignote alternativement",
|
||||
"扫描设备": "Appareil de numérisation",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "La suppression a échoué. La passerelle est peut-être hors ligne. Voulez-vous forcer la suppression des données?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Suivre le système",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Après réinitialisation, les empreintes digitales de la serrure seront supprimées. Êtes-vous sûr de vouloir le réinitialiser?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Après réinitialisation, la télécommande du verrou sera supprimée. Voulez-vous le réinitialiser?",
|
||||
"版本说明": "Explication de la version",
|
||||
"版本说明": "Explication de la version"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "הסיסמאות אינן עקביות",
|
||||
"中功率": "כוח בינוני",
|
||||
"常规使用": "שימוש קבוע",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "לאחר השער מופעל, לחץ והחזק את כפתור איפוס עבור 5 שניות, ולחץ על הבא כאשר מחוון אור מהבהב לסירוגין",
|
||||
"扫描设备": "התקן סריקה",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "מחיקה נכשלה. ייתכן שהשער נעלם מהרשת. האם ברצונך לאלץ למחוק את הנתונים?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "מערכת מעקב",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "לאחר איפוס, טביעות האצבעות של המנעול יימחקו. אתה בטוח שברצונך לאפס את זה?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "לאחר איפוס, השליטה מרחוק של המנעול יימחק. אתה רוצה לאפס את זה?",
|
||||
"版本说明": "המידע על גרסה",
|
||||
"版本说明": "המידע על גרסה"
|
||||
}
|
||||
@ -217,7 +217,6 @@
|
||||
"添加网关": "添加網關",
|
||||
"重新通电": "重新連接電源",
|
||||
"指示灯": "指示燈",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "網關上電之後,長按復位鍵5秒,指示燈交替閃爍時點擊下一步",
|
||||
"选择网关": "選擇Gateway (網關)",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "唔撐5G。 請選擇2.4G嘅WiFi。",
|
||||
"WiFi密码": "WiFi通行證",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Šifre nisu dosljedne",
|
||||
"中功率": "Srednja snaga",
|
||||
"常规使用": "Redovna upotreba",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Nakon što se prolaz ukljuèi, pritisnite i zadržite dugme za reset 5 sekundi, i kliknite Sljedeća kada svjetlost indikatora izmijeniti",
|
||||
"扫描设备": "Skeniraj uređaj",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Brisanje nije uspjelo. Prolaz je možda nestao. Želite li prisiliti brisati podatke?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Prati sistem:",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Nakon resetovanja, otisci brave će biti izbrisani. Jeste li sigurni da ga želite resetirati?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nakon resetovanja, daljinski upravljač brave će biti izbrisan. Hoæeš da ga resetuješ?",
|
||||
"版本说明": "Informacije o verziji",
|
||||
"版本说明": "Informacije o verziji"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "A jelszavak nem következetesek",
|
||||
"中功率": "Közepes teljesítmény",
|
||||
"常规使用": "Rendszeres használat",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Miután az átjáró be van kapcsolva, nyomja meg és tartsa a reset gombot 5 másodpercig, és kattintson a következő gombra, amikor a jelző fény felváltva villog",
|
||||
"扫描设备": "Beolvasási eszköz",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "A törlés nem sikerült. Az átjáró lehet, hogy offline lett. Szeretné kényszeríteni az adatok törlését?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Follow system",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "A reset után a zár ujjlenyomatai törlődnek. Biztos vagy benne, hogy vissza szeretné állítani?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "A reset után a zár távirányítója törlődik. Szeretné visszaállítani?",
|
||||
"版本说明": "Versió leírás",
|
||||
"版本说明": "Versió leírás"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Kata sandi tidak konsisten",
|
||||
"中功率": "Kekuatan sedang",
|
||||
"常规使用": "Penggunaan biasa",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Setelah gateway menyala, tekan dan tahan tombol reset selama 5 detik, dan klik berikutnya ketika lampu indikator berkedip secara bersamaan",
|
||||
"扫描设备": "Perangkat Pindai",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Penghapusan gagal. Gateway mungkin telah offline. Ingin menghapus data?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Sistem mengikuti",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Setelah mengulang, sidik jari kunci akan dihapus. Yakin ingin meresetnya?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Setelah reset, remote control kunci akan dihapus. Ingin mengatur ulang?",
|
||||
"版本说明": "Catatan versi",
|
||||
"版本说明": "Catatan versi"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Le password sono incoerenti",
|
||||
"中功率": "Potenza media",
|
||||
"常规使用": "Uso regolare",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Dopo aver acceso il gateway, tenere premuto il pulsante di ripristino per 5 secondi e fare clic su Avanti quando l'indicatore luminoso lampeggia alternativamente",
|
||||
"扫描设备": "Dispositivo di scansione",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Eliminazione non riuscita. Il gateway potrebbe essere andato offline. Vuoi forzare l'eliminazione dei dati?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "パスワードが一致しない",
|
||||
"中功率": "ミディアムパワー",
|
||||
"常规使用": "通常の使用",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "ゲートウェイの電源がオンになった後、リセットボタンを5秒間押し続け、インジケーターライトが交互に点滅したら [次へ] をクリックします。",
|
||||
"扫描设备": "スキャン装置",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "削除に失敗しました。ゲートウェイがオフラインになった可能性があります。強制的にデータを削除しますか?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "システムに従う",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "リセット後、ロックの指紋は削除されます。リセットしてもよろしいですか。",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "リセット後、ロックのリモコンが削除されます。リセットしますか?",
|
||||
"版本说明": "バージョン説明",
|
||||
"版本说明": "バージョン説明"
|
||||
}
|
||||
@ -219,7 +219,7 @@
|
||||
"添加网关": "添加网关",
|
||||
"重新通电": "重新通电",
|
||||
"指示灯": "指示灯",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步",
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步",
|
||||
"选择网关": "选择网关",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "不支持5G WiFi网络,请选择2.4G WiFi网络进行配置",
|
||||
"WiFi密码": "WiFi密码",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Парольдер болмаған",
|
||||
"中功率": "Орташа қуары",
|
||||
"常规使用": "Қалыпты қолданылсын",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Келесі періңізнен соң, ысырып тасымалдау батырмасын басып 5 секунд басыңыз, Индикаторның жарықты ауыстырғанда, келесі басыңыз",
|
||||
"扫描设备": "Сканер құрылғысы",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Өшіру жаңылысы. Келесі жіберді. Деректерді өшіргіңіз келе ме?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Жүйені қолдану",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Қайта ысырып тастау Шынымен ысырып тастауды қалайсыз ба?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Қайта ысырып ысырып тасымалдауын өшіріледі. Оны ысырып тастауды қалайсыз ба?",
|
||||
"版本说明": "Версиятын көрсету",
|
||||
"版本说明": "Версиятын көрсету"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "암호가 일치하지 않습니다.",
|
||||
"中功率": "중간 전력",
|
||||
"常规使用": "정사이즈 사용",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "게이트웨이의 전원이 켜진 후 5 초 동안 리셋 버튼을 누르고 누르고 표시등이 번갈아 깜박이면 다음 을 클릭하십시오.",
|
||||
"扫描设备": "스캔 장치",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "삭제가 실패했습니다. 게이트웨이가 오프라인 상태일 수 있다. 강제로 데이터 삭제를 하시겠습니까?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "시스템을 따르십시오",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 지문이 삭제됩니다. 당신은 그것을 재설정 하시겠습니까?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 리모컨이 삭제됩니다. 당신은 그것을 재설정 하시겠습니까?",
|
||||
"版本说明": "버전 설명",
|
||||
"版本说明": "버전 설명"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Slaptažodžiai yra nenuoseklūs",
|
||||
"中功率": "Vidutinės galios",
|
||||
"常规使用": "Reguliarus naudojimas",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Įjungus vartus, 5 sekundes paspauskite ir palaikykite reset mygtuką ir spustelėkite toliau, kai indikatoriaus lemputė mirksi pakaitomis.",
|
||||
"扫描设备": "Nuskaitymo įrenginys",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Ištrynimas nepavyko. Vartai gali būti neprisijungę. Ar norite priversti ištrinti duomenis?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Sekti sistema",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po reset užrakto pirštų atspaudai bus ištrinti. Ar tikrai norite jį atkurti?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po reset, nuotolinis valdymo pultas užraktas bus ištrintas. Ar norite jį atkurti?",
|
||||
"版本说明": "Versijos aprašymas",
|
||||
"版本说明": "Versijos aprašymas"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Kata laluan tidak konsisten",
|
||||
"中功率": "Kuasa sederhana",
|
||||
"常规使用": "Penggunaan biasa",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Selepas pintu masuk dihidupkan, tekan dan tahan butang reset selama 5 saat, dan klik seterusnya apabila lampu penunjuk berkelip bergantian",
|
||||
"扫描设备": "Imbas peranti",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Penghapusan gagal. Pintu masuk mungkin telah pergi di luar talian. Adakah anda mahu memaksa memadam data?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Ikut system",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, cap jari kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, kawalan jauh kunci akan dipadamkan. Adakah anda mahu menetapkan semula?",
|
||||
"版本说明": "Penerangan versi",
|
||||
"版本说明": "Penerangan versi"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "De wachtwoorden zijn inconsistent",
|
||||
"中功率": "Middelgroot vermogen",
|
||||
"常规使用": "Regelmatig gebruik",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Nadat de gateway is ingeschakeld, houdt u de resetknop 5 seconden ingedrukt en klikt u op Volgende wanneer het indicatielampje afwisselend knippert",
|
||||
"扫描设备": "Scan apparaat",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Verwijdering is mislukt. De gateway is mogelijk offline gegaan. Wilt u de gegevens forceren verwijderen?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Systeem volgen",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Na het resetten worden de vingerafdrukken van het slot verwijderd. Weet je zeker dat je het wilt resetten?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Na het resetten wordt de afstandsbediening van het slot verwijderd. Wilt u het resetten?",
|
||||
"版本说明": "Versieomschrijving",
|
||||
"版本说明": "Versieomschrijving"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Hasła są niespójne",
|
||||
"中功率": "Średnia moc",
|
||||
"常规使用": "Regularne stosowanie",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Po włączeniu bramy naciśnij i przytrzymaj przycisk resetowania przez 5 sekund i kliknij przycisk Dalej, gdy wskaźnik miga na przemian",
|
||||
"扫描设备": "Urządzenie skanujące",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Usunięcie nie powiodło się. Brama mogła zostać wyłączona. Czy chcesz wymusić usunięcie danych?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Śledź system",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po zresetowaniu odciski palców zamka zostaną usunięte. Czy na pewno chcesz go zresetować?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po zresetowaniu zdalne sterowanie zamkiem zostanie usunięte. Czy chcesz go zresetować?",
|
||||
"版本说明": "Wersja",
|
||||
"版本说明": "Wersja"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "As senhas são inconsistentes",
|
||||
"中功率": "Potência média",
|
||||
"常规使用": "Uso regular",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Depois que o gateway estiver ligado, pressione e segure o botão de reset por 5 segundos e clique em Next quando a luz indicadora pisca alternadamente",
|
||||
"扫描设备": "Digitalizar dispositivo",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "A eliminação falhou. O gateway pode ter ficado offline. Você quer forçar a exclusão dos dados?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Siga o sistema",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Após a redefinição, as impressões digitais do bloqueio serão apagadas. Tens a certeza que queres redefini-lo?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Após a reinicialização, o controle remoto do bloqueio será excluído. Você quer redefini-lo?",
|
||||
"版本说明": "Descrição da versão",
|
||||
"版本说明": "Descrição da versão"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Parolele sunt inconsistente",
|
||||
"中功率": "Putere medie",
|
||||
"常规使用": "Utilizare regulată",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "După ce poarta este pornită, apăsați și țineți butonul de resetare timp de 5 secunde, și faceți clic pe Următor atunci când lumina indicatorului se aprinde alternativ.",
|
||||
"扫描设备": "Dispozitiv de scanare",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Ștergerea a eșuat. Poarta poate s-a oprit. Doriți să forțați ștergerea datelor?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Urmează sistemul:",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "După resetare, amprentele încuietorii vor fi şterse. Sigur doriți să-l resetați?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "După resetare, telecomanda de blocare va fi ştersă. Vrei să-l resetezi?",
|
||||
"版本说明": "Descrierea versiunii",
|
||||
"版本说明": "Descrierea versiunii"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Пароли являются несовместимыми",
|
||||
"中功率": "Средняя мощность",
|
||||
"常规使用": "Регулярное использование",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "После включения шлюза нажмите и удерживайте кнопку сброса в течение 5 секунд и нажмите «Далее», когда индикатор попеременно начнет мигать.",
|
||||
"扫描设备": "Устройство сканирования",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Ошибка удаления. Возможно, шлюз ушел в автономный режим. Хотите ли вы принудительно удалить данные?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Следуйте системе",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "После сброса отпечатки пальцев замка будут удалены. Вы уверены, что хотите его перезагрузить?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "После сброса пульт дистанционного управления замком будет удален. А вы хотите его сбросить?",
|
||||
"版本说明": "Объяснение версии",
|
||||
"版本说明": "Объяснение версии"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Heslá sú nekonzistentné",
|
||||
"中功率": "Stredný výkon",
|
||||
"常规使用": "Pravidelné použitie",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Po zapnutí brány stlačte a podržte tlačidlo reset po dobu 5 sekúnd a kliknite na ďalšie, keď indikátorové svetlo záblesky striedavo",
|
||||
"扫描设备": "Skenovanie zariadenia",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Vymazanie sa nepodarilo. Brána môže ísť offline. Chcete vynútiť odstránenie údajov?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Лозинке су недоследне",
|
||||
"中功率": "Средња снага",
|
||||
"常规使用": "Редовна употреба",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Након што је гатеваи укључен, притисните и држите дугме за ресетовање за 5 секунди, и кликните Следећи када индикатор трепери наизменично",
|
||||
"扫描设备": "Уређај за скенирање",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Брисање није успело. Гатеваи је можда отишао ван мреже. Да ли желите да присилите брисање података?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Lösenord är inkonsekventa",
|
||||
"中功率": "Medelse",
|
||||
"常规使用": "Regelbunden användning",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "När gateway är på, tryck och håll omställningsknappen i 5 sekunder, och klicka Nästa när indikatorljuset blinkar växelvist",
|
||||
"扫描设备": "Söka enheter",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Borttagning misslyckades. Porten kan ha gått offline. Vill du tvinga bort data?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "รหัสผ่านไม่สอดคล้องกัน",
|
||||
"中功率": "กำลังไฟปานกลาง",
|
||||
"常规使用": "ใช้เป็นประจำ",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "หลังจากเปิดเกตเวย์แล้วให้กดปุ่มรีเซ็ตค้างไว้5วินาทีและคลิกถัดไปเมื่อไฟแสดงสถานะกะพริบสลับกัน",
|
||||
"扫描设备": "อุปกรณ์สแกน",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "การลบล้มเหลวเกตเวย์อาจออฟไลน์ไปแล้วคุณต้องการบังคับให้ลบข้อมูลหรือไม่?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Şifreler tutarsız",
|
||||
"中功率": "Orta güç",
|
||||
"常规使用": "Düzenli kullanım",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Ağ geçidi açıldıktan sonra, sıfırlama düğmesine 5 saniye basılı tutun ve gösterge ışığı dönüşümlü olarak yanıp söndüğünde İleri'ye tıklayın.",
|
||||
"扫描设备": "Tarama cihazı",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Silme başarısız oldu. Ağ geçidi çevrimdışı geçmiş olabilir. Verileri silmeye zorlamak ister misiniz?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Sistemi takip et",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin parmak izleri silinecektir. Sıfırlamak istediğine emin misin?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Sıfırladıktan sonra, kilidin uzaktan kumandası silinecektir. Sıfırlamak ister misin?",
|
||||
"版本说明": "Sürüm açıklaması",
|
||||
"版本说明": "Sürüm açıklaması"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "密碼不一致",
|
||||
"中功率": "媒介權力",
|
||||
"常规使用": "經常使用",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "網關通電後,按住reset按鈕5秒鐘,當指示燈交替閃爍時單擊Next",
|
||||
"扫描设备": "掃描設備",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "刪除失敗。 網關可能已脫機。 是否要強制刪除數據?",
|
||||
"超级管理员英文": "超級管理員",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "跟蹤系統",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置後,鎖的指紋將被刪除。 是否確實要重置它?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置後,鎖的遙控器將被刪除。 是否要重置它?",
|
||||
"版本说明": "版本說明",
|
||||
"版本说明": "版本說明"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Паролі несумісні",
|
||||
"中功率": "Середня потужність",
|
||||
"常规使用": "Регулярне використання",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Після ввімкнення шлюзу натисніть і утримуйте кнопку скидання протягом 5 секунд, а потім натисніть «Далі», коли індикатор почне блимати по черзі",
|
||||
"扫描设备": "Сканування пристрою",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Видалення не вдалося. Можливо, шлюз перейшов в автономний режим. Ви хочете примусово видалити дані?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
@ -1121,5 +1120,5 @@
|
||||
"跟随系统": "Система стеження за",
|
||||
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Після скидання відбитки пальців замка будуть видалені. Ви впевнені, що хочете скинути налаштування?",
|
||||
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Після скидання пульт дистанційного керування замком буде видалено. Хочете його скинути?",
|
||||
"版本说明": "Опис версії",
|
||||
"版本说明": "Опис версії"
|
||||
}
|
||||
@ -1105,7 +1105,6 @@
|
||||
"两次密码不一致哦": "Mật khẩu không nhất quán",
|
||||
"中功率": "Công suất trung bình",
|
||||
"常规使用": "Sử dụng thường xuyên",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Sau khi cổng được bật, Nhấn và giữ nút đặt lại trong 5 giây và Nhấp vào tiếp theo khi đèn báo nhấp nháy luân phiên",
|
||||
"扫描设备": "Thiết bị quét",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Xóa thất bại. Cổng có thể đã tắt. Bạn có muốn buộc xóa dữ liệu không?",
|
||||
"超级管理员英文": "Super Admin",
|
||||
|
||||
@ -218,7 +218,7 @@
|
||||
"添加网关": "添加网关",
|
||||
"重新通电": "重新通电",
|
||||
"指示灯": "指示灯",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步",
|
||||
"网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步",
|
||||
"选择网关": "选择网关",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "不支持5G WiFi网络,请选择2.4G WiFi网络进行配置",
|
||||
"WiFi密码": "WiFi密码",
|
||||
|
||||
@ -4,14 +4,15 @@ import 'package:firebase_core/firebase_core.dart'
|
||||
show Firebase, FirebaseOptions;
|
||||
import 'package:flutter/foundation.dart'
|
||||
show defaultTargetPlatform, kIsWeb, TargetPlatform;
|
||||
import 'package:star_lock/flavors.dart';
|
||||
|
||||
class DefaultFirebaseOptions {
|
||||
static FirebaseOptions get currentPlatform {
|
||||
switch (defaultTargetPlatform) {
|
||||
case TargetPlatform.android:
|
||||
return android;
|
||||
case TargetPlatform.iOS:
|
||||
return ios;
|
||||
switch (F.appFlavor) {
|
||||
case Flavor.sky:
|
||||
return sky_android;
|
||||
case Flavor.xhj_bundle:
|
||||
return xhj_android;
|
||||
default:
|
||||
throw UnsupportedError(
|
||||
'DefaultFirebaseOptions are not supported for this platform.',
|
||||
@ -19,14 +20,22 @@ class DefaultFirebaseOptions {
|
||||
}
|
||||
}
|
||||
|
||||
static const FirebaseOptions android = FirebaseOptions(
|
||||
static const FirebaseOptions sky_android = FirebaseOptions(
|
||||
apiKey: 'AIzaSyC-3-ABWuy9LrYyAw_KxDRto4DanQ0sq9g',
|
||||
appId: '1:281500445726:android:ddf52ac7b7f83cf5c4d20f',
|
||||
messagingSenderId: '281500445726',
|
||||
projectId: 'skychip2023-ecdff',
|
||||
projectId: 'smart-lock-12b8c',
|
||||
storageBucket: 'skychip2023-ecdff.firebasestorage.app',
|
||||
);
|
||||
|
||||
static const FirebaseOptions xhj_android = FirebaseOptions(
|
||||
apiKey: 'AIzaSyAm8dJlBY5hjslJDVDBNd2bkWrJlGjAMqw',
|
||||
appId: '1:448746601330:android:1a8056175e1dad5e317beb',
|
||||
messagingSenderId: '448746601330',
|
||||
projectId: 'smart-lock-12b8c',
|
||||
storageBucket: 'smart-lock-12b8c.firebasestorage.app',
|
||||
);
|
||||
|
||||
static const FirebaseOptions ios = FirebaseOptions(
|
||||
apiKey: 'AIzaSyACbp5aUKhLU1SMg8iIdm9WmNX7wxI7fVc',
|
||||
appId: '1:281500445726:ios:b194ccffb92fb86cc4d20f',
|
||||
@ -51,9 +60,14 @@ class FirebaseHelper {
|
||||
}
|
||||
|
||||
Future<void> initApp() async {
|
||||
await Firebase.initializeApp(
|
||||
options: DefaultFirebaseOptions.currentPlatform,
|
||||
);
|
||||
const bool isProductVmMode = bool.fromEnvironment('dart.vm.product');
|
||||
if (F.isProductionEnv &&
|
||||
isProductVmMode &&
|
||||
defaultTargetPlatform == TargetPlatform.android) {
|
||||
await Firebase.initializeApp(
|
||||
options: DefaultFirebaseOptions.currentPlatform,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> initSdk() async {
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
|
||||
import 'io_tool/io_manager.dart';
|
||||
@ -8,12 +7,14 @@ abstract class IOData {
|
||||
List<int> messageDetail();
|
||||
}
|
||||
|
||||
abstract class SenderProtocol extends IOData { //数据块
|
||||
abstract class SenderProtocol extends IOData {
|
||||
//数据块
|
||||
// final int? tail = 0xFF; //用来校验包的完整性,采用 CRC 校验方法,长度为 2 个字节
|
||||
|
||||
SenderProtocol(this.commandType) {
|
||||
_commandIndex = IoManager().commandIndex;
|
||||
}
|
||||
|
||||
// var uint8View1 = Uint8List(300);
|
||||
|
||||
CommandType? commandType; //指令类型
|
||||
@ -33,8 +34,7 @@ abstract class SenderProtocol extends IOData { //数据块
|
||||
|
||||
void printLog(List<int> data) {
|
||||
AppLog.log(
|
||||
"App -> 锁,指令类型:${commandType!.typeName} ${commandType!.typeValue == 0x3030
|
||||
? '子命令:${data[3]}' : ''} \n参数是:\n${toString()} \n加密之前数据是:\n$data 长度是:${data.length}");
|
||||
"App -> 锁,指令类型:${commandType!.typeName} ${commandType!.typeValue == 0x3030 ? '子命令:${data[3]}' : ''} \n参数是:\n${toString()} \n加密之前数据是:\n$data 长度是:${data.length}");
|
||||
}
|
||||
|
||||
// 拼装数据
|
||||
|
||||
@ -8,6 +8,7 @@ enum Flavor {
|
||||
sky_dev,
|
||||
sky_pre,
|
||||
xhj,
|
||||
xhj_bundle,
|
||||
xhj_dev,
|
||||
xhj_pre,
|
||||
}
|
||||
@ -48,6 +49,7 @@ class F {
|
||||
|
||||
static bool get isXHJ =>
|
||||
appFlavor == Flavor.xhj ||
|
||||
appFlavor == Flavor.xhj_bundle ||
|
||||
appFlavor == Flavor.xhj_dev ||
|
||||
appFlavor == Flavor.xhj_pre;
|
||||
|
||||
@ -71,6 +73,7 @@ class F {
|
||||
case Flavor.dev:
|
||||
case Flavor.pre:
|
||||
case Flavor.xhj:
|
||||
case Flavor.xhj_bundle:
|
||||
default:
|
||||
return xhjCall();
|
||||
}
|
||||
@ -89,6 +92,7 @@ class F {
|
||||
case Flavor.sky_pre:
|
||||
return '锁通通'.tr;
|
||||
case Flavor.xhj:
|
||||
case Flavor.xhj_bundle:
|
||||
case Flavor.xhj_dev:
|
||||
case Flavor.xhj_pre:
|
||||
return '星星锁'.tr;
|
||||
@ -110,6 +114,7 @@ class F {
|
||||
case Flavor.sky_pre:
|
||||
return '锁通通'.tr;
|
||||
case Flavor.xhj:
|
||||
case Flavor.xhj_bundle:
|
||||
case Flavor.xhj_dev:
|
||||
case Flavor.xhj_pre:
|
||||
return '星星锁'.tr;
|
||||
@ -136,6 +141,7 @@ class F {
|
||||
case Flavor.sky:
|
||||
return 'https://lock.skychip.top';
|
||||
case Flavor.xhj:
|
||||
case Flavor.xhj_bundle:
|
||||
return 'https://lock.xhjcn.ltd';
|
||||
// return 'https://pre.lock.star-lock.cn';
|
||||
default:
|
||||
@ -186,6 +192,9 @@ class F {
|
||||
return const StarLockAMapKey(
|
||||
androidKey: '9dd8073a2e96870b206269bb562a887a',
|
||||
iosKey: 'c70047e60ce704d945ea89d6c2763b82');
|
||||
case Flavor.xhj_bundle:
|
||||
return const StarLockAMapKey(
|
||||
androidKey: 'c47fa8e1d9e2a25321dbee75e1ff7790', iosKey: '');
|
||||
default:
|
||||
return const StarLockAMapKey(
|
||||
androidKey: 'no valied key',
|
||||
@ -250,6 +259,28 @@ class F {
|
||||
}
|
||||
}
|
||||
|
||||
// StarLockAMapKey
|
||||
static String get jPushKey {
|
||||
switch (appFlavor) {
|
||||
case Flavor.local:
|
||||
case Flavor.dev:
|
||||
case Flavor.pre:
|
||||
return '';
|
||||
case Flavor.sky_dev:
|
||||
case Flavor.sky_pre:
|
||||
case Flavor.sky:
|
||||
return '7ff37d174c1a568a89e98dad';
|
||||
case Flavor.xhj_dev:
|
||||
case Flavor.xhj_pre:
|
||||
case Flavor.xhj:
|
||||
return '251fc8074820d122b6de58d2';
|
||||
case Flavor.xhj_bundle:
|
||||
return '5ccdb9b8d3faaae66ba5d02e';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
// 是否是生产环境
|
||||
static bool get isProductionEnv {
|
||||
switch (appFlavor) {
|
||||
@ -259,6 +290,7 @@ class F {
|
||||
return false;
|
||||
case Flavor.sky:
|
||||
case Flavor.xhj:
|
||||
case Flavor.xhj_bundle:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
||||
@ -2,6 +2,7 @@ import 'dart:async';
|
||||
|
||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
import 'package:star_lock/login/login/entity/LoginEntity.dart';
|
||||
import 'package:star_lock/main/lockDetail/card/addICCard/addICCard_entity.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
@ -52,11 +53,11 @@ class AddICCardLogic extends BaseGetXController {
|
||||
switch (status) {
|
||||
case 0x00:
|
||||
//成功
|
||||
final List<int> cardNumberList =
|
||||
reply.data.sublist(reply.data.length - 2);
|
||||
final String cardNumber = listChangInt(cardNumberList).toString();
|
||||
// AppLog.log("添加卡号:$cardNumberList cardNumber:$cardNumber");
|
||||
state.cardNumber.value = cardNumber.toString();
|
||||
// final List<int> cardNumberList =
|
||||
// reply.data.sublist(reply.data.length - 2);
|
||||
// final String cardNumber = listChangInt(cardNumberList).toString();
|
||||
// // AppLog.log("添加卡号:$cardNumberList cardNumber:$cardNumber");
|
||||
// state.cardNumber.value = cardNumber.toString();
|
||||
cancelBlueConnetctToastTimer();
|
||||
|
||||
state.ifAddState.value = true;
|
||||
@ -134,6 +135,10 @@ class AddICCardLogic extends BaseGetXController {
|
||||
'date': DateTool().getNowDateWithType(1),
|
||||
'add_card_result': '成功',
|
||||
});
|
||||
AppLog.log('data:${reply.data}');
|
||||
final List<int> cardNumberList = reply.data.sublist(6, 8);
|
||||
final String cardNumber = listChangInt(cardNumberList).toString();
|
||||
state.cardNumber.value = cardNumber.toString();
|
||||
switch (reply.data[5]) {
|
||||
case 0xff:
|
||||
// 注册指纹失败
|
||||
|
||||
@ -47,6 +47,8 @@ class CatEyeCustomModeLogic extends BaseGetXController {
|
||||
}
|
||||
}
|
||||
}
|
||||
await _getConfigAndGenerateBleData();
|
||||
updateCatEyeSetConfig();
|
||||
return entity;
|
||||
}
|
||||
|
||||
@ -79,8 +81,7 @@ class CatEyeCustomModeLogic extends BaseGetXController {
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast('设置成功'.tr);
|
||||
_getConfigAndGenerateBleData();
|
||||
updateCatEyeSetConfig();
|
||||
await getLockSettingInfoData();
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,14 +207,6 @@ class CatEyeCustomModeLogic extends BaseGetXController {
|
||||
privateKey: getPrivateKeyList,
|
||||
);
|
||||
final packageData = command.packageData();
|
||||
|
||||
// 将 List<int> 转换为十六进制字符串
|
||||
String hexString = packageData
|
||||
.map((byte) => byte.toRadixString(16).padLeft(2, '0'))
|
||||
.join(' ');
|
||||
|
||||
AppLog.log('open lock hexString: $hexString');
|
||||
|
||||
/// 发送星图
|
||||
StartChartManage().sendBleMessage(
|
||||
bluetoothDeviceName: BlueManage().connectDeviceName,
|
||||
|
||||
@ -29,7 +29,7 @@ class CatEyeSetLogic extends BaseGetXController {
|
||||
state.catEyeConfig.value.autoLightScreen =
|
||||
state.isAutoBright.value == true ? 1 : 0;
|
||||
state.catEyeConfig.refresh();
|
||||
updateCatEyeSetConfig();
|
||||
await getLockSettingInfoData();
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,7 +46,7 @@ class CatEyeSetLogic extends BaseGetXController {
|
||||
state.catEyeConfig.value.autoLightScreenTime =
|
||||
int.parse(state.selectBrightDuration.value.replaceAll('秒'.tr, ''));
|
||||
state.catEyeConfig.refresh();
|
||||
updateCatEyeSetConfig();
|
||||
await getLockSettingInfoData();
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ class CatEyeSetLogic extends BaseGetXController {
|
||||
state.catEyeConfig.value.autoLightScreen =
|
||||
state.isStayWarning.value == true ? 1 : 0;
|
||||
state.catEyeConfig.refresh();
|
||||
updateCatEyeSetConfig();
|
||||
await getLockSettingInfoData();
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ class CatEyeSetLogic extends BaseGetXController {
|
||||
state.catEyeConfig.value.autoLightScreen =
|
||||
state.isExceptionWarning.value == true ? 1 : 0;
|
||||
state.catEyeConfig.refresh();
|
||||
updateCatEyeSetConfig();
|
||||
await getLockSettingInfoData();
|
||||
}
|
||||
}
|
||||
|
||||
@ -137,14 +137,14 @@ class CatEyeSetLogic extends BaseGetXController {
|
||||
XSConstantMacro.catEyeWorkModeCustom) {
|
||||
state.selectCatEyeWorkMode.value = '自定义模式'.tr;
|
||||
}
|
||||
_getConfigAndGenerateBleData();
|
||||
updateCatEyeSetConfig();
|
||||
}
|
||||
}
|
||||
await _getConfigAndGenerateBleData();
|
||||
updateCatEyeSetConfig();
|
||||
return entity;
|
||||
}
|
||||
|
||||
_getConfigAndGenerateBleData() {
|
||||
_getConfigAndGenerateBleData() async {
|
||||
// 假设 state.lockSetInfoData.value.lockSettingInfo!.catEyeConfig![0].catEyeMode 是一个整数
|
||||
int originalCatEyeMode = state
|
||||
.lockSetInfoData.value.lockSettingInfo!.catEyeConfig![0].catEyeMode!;
|
||||
@ -168,13 +168,19 @@ class CatEyeSetLogic extends BaseGetXController {
|
||||
int recordTime = _handleGetIntNumber(state.lockSetInfoData.value
|
||||
.lockSettingInfo!.catEyeConfig![0].catEyeModeConfig!.recordTime!);
|
||||
|
||||
int detectionDistance = _handleDetectionDistance(state
|
||||
.lockSetInfoData
|
||||
.value
|
||||
.lockSettingInfo!
|
||||
.catEyeConfig![0]
|
||||
.catEyeModeConfig!
|
||||
.detectionDistance!);
|
||||
int detectionDistance = 0;
|
||||
if (state.lockSetInfoData.value.lockSettingInfo!.catEyeConfig![0]!
|
||||
.catEyeModeConfig!.detectionDistance !=
|
||||
null) {
|
||||
detectionDistance = _handleDetectionDistance(state
|
||||
.lockSetInfoData
|
||||
.value
|
||||
.lockSettingInfo!
|
||||
.catEyeConfig![0]
|
||||
.catEyeModeConfig!
|
||||
.detectionDistance!);
|
||||
}
|
||||
|
||||
int realTimeMode = state.lockSetInfoData.value.lockSettingInfo!
|
||||
.catEyeConfig![0].catEyeModeConfig!.realTimeMode!;
|
||||
|
||||
@ -254,10 +260,10 @@ class CatEyeSetLogic extends BaseGetXController {
|
||||
final List<String>? publicKey =
|
||||
await Storage.getStringList(saveBluePublicKey);
|
||||
final List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
|
||||
|
||||
final userId = await Storage.getUid();
|
||||
final command = SetSupportFunctionsWithParametersCommand(
|
||||
keyID: state.lockSetInfoData.value.lockBasicInfo!.keyId.toString(),
|
||||
userID: await Storage.getUid(),
|
||||
userID: userId,
|
||||
featureBit: 64,
|
||||
featureParaLength: config.length,
|
||||
featureData: config,
|
||||
@ -273,7 +279,7 @@ class CatEyeSetLogic extends BaseGetXController {
|
||||
.map((byte) => byte.toRadixString(16).padLeft(2, '0'))
|
||||
.join(' ');
|
||||
|
||||
AppLog.log('open lock hexString: $hexString');
|
||||
AppLog.log('发送透传猫眼设置: $hexString');
|
||||
|
||||
/// 发送星图
|
||||
StartChartManage().sendBleMessage(
|
||||
@ -344,10 +350,10 @@ class CatEyeSetLogic extends BaseGetXController {
|
||||
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(recordStartTime);
|
||||
|
||||
// 提取小时和分钟
|
||||
int hour = dateTime.hour;
|
||||
int minute = dateTime.minute;
|
||||
// int hour = dateTime.hour;
|
||||
// int minute = dateTime.minute;
|
||||
|
||||
print("时: $hour, 分: $minute");
|
||||
// print("时: $hour, 分: $minute");
|
||||
|
||||
// 计算从当天0点开始的分钟数
|
||||
int minutesSinceMidnight = dateTime.hour * 60 + dateTime.minute;
|
||||
|
||||
@ -1,12 +1,16 @@
|
||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
import 'package:star_lock/blue/blue_manage.dart';
|
||||
import 'package:star_lock/blue/io_protocol/io_setSupportFunctionsWithParameters.dart';
|
||||
import 'package:star_lock/blue/io_tool/io_tool.dart';
|
||||
import 'package:star_lock/blue/sender_manage.dart';
|
||||
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_state.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_state.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/talk/starChart/star_chart_manage.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import 'package:star_lock/tools/storage.dart';
|
||||
import 'package:star_lock/versionUndate/versionUndate_entity.dart';
|
||||
@ -56,6 +60,8 @@ class CatEyeWorkModeLogic extends BaseGetXController {
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast('设置成功'.tr);
|
||||
getLockSettingInfoData();
|
||||
|
||||
updateCatEyeSetConfig();
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,7 +128,252 @@ class CatEyeWorkModeLogic extends BaseGetXController {
|
||||
XSConstantMacro.catEyeWorkModeCustom) {
|
||||
state.boolList.value = <bool>[false, false, false, true];
|
||||
}
|
||||
_getConfigAndGenerateBleData();
|
||||
updateCatEyeSetConfig();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_getConfigAndGenerateBleData() {
|
||||
// 假设 state.lockSetInfoData.value.lockSettingInfo!.catEyeConfig![0].catEyeMode 是一个整数
|
||||
int originalCatEyeMode = state
|
||||
.lockSetInfoData.value.lockSettingInfo!.catEyeConfig![0].catEyeMode!;
|
||||
int recordMode = state.lockSetInfoData.value.lockSettingInfo!
|
||||
.catEyeConfig![0].catEyeModeConfig!.recordMode ==
|
||||
0
|
||||
? 1
|
||||
: 0;
|
||||
|
||||
int stayWarn = state.lockSetInfoData.value.lockSettingInfo!.stayWarn!;
|
||||
int abnormalWarn =
|
||||
state.lockSetInfoData.value.lockSettingInfo!.abnormalWarn!;
|
||||
int autoLightScreen =
|
||||
state.lockSetInfoData.value.lockSettingInfo!.autoLightScreen!;
|
||||
|
||||
int recordStartTime = _handleTimeToM(state.lockSetInfoData.value
|
||||
.lockSettingInfo!.catEyeConfig![0].catEyeModeConfig!.recordStartTime!);
|
||||
int recordEndTime = _handleTimeToM(state.lockSetInfoData.value
|
||||
.lockSettingInfo!.catEyeConfig![0].catEyeModeConfig!.recordEndTime!);
|
||||
|
||||
int recordTime = _handleGetIntNumber(state.lockSetInfoData.value
|
||||
.lockSettingInfo!.catEyeConfig![0].catEyeModeConfig!.recordTime!);
|
||||
|
||||
int detectionDistance = _handleDetectionDistance(state
|
||||
.lockSetInfoData
|
||||
.value
|
||||
.lockSettingInfo!
|
||||
.catEyeConfig![0]
|
||||
.catEyeModeConfig!
|
||||
.detectionDistance!);
|
||||
int realTimeMode = state.lockSetInfoData.value.lockSettingInfo!
|
||||
.catEyeConfig![0].catEyeModeConfig!.realTimeMode!;
|
||||
|
||||
// 根据需要调整 catEyeMode 的值
|
||||
int adjustedCatEyeMode =
|
||||
originalCatEyeMode > 0 ? originalCatEyeMode - 1 : originalCatEyeMode;
|
||||
int brightScreenTime =
|
||||
state.lockSetInfoData.value.lockSettingInfo!.autoLightScreenTime!;
|
||||
|
||||
/// 对照星锁接口文档v0.2 的猫眼设置接口,获取出猫眼的所有设置
|
||||
state.catEyeConfig.value = CatEyeSetEntity(
|
||||
catEyeMode: adjustedCatEyeMode,
|
||||
// 猫眼模式 看常量表
|
||||
recordMode: recordMode,
|
||||
//录像时段 0全天 1自定义时间
|
||||
recordStartTime: recordStartTime,
|
||||
//自定义时间需要填:recordStartTime与recordEndTime参数
|
||||
recordEndTime: recordEndTime,
|
||||
//自定义时间需要填:recordStartTime与recordEndTime参数
|
||||
realTimeMode: realTimeMode,
|
||||
autoLightScreenTime: brightScreenTime,
|
||||
stayWarn: stayWarn,
|
||||
autoLightScreen: autoLightScreen,
|
||||
// 打开自动亮屏
|
||||
abnormalWarn: abnormalWarn,
|
||||
// 有人出现时录像时间
|
||||
recordTime: recordTime,
|
||||
// 人体检测距离
|
||||
detectionDistance: detectionDistance,
|
||||
realTimePicture: realTimeMode,
|
||||
);
|
||||
state.catEyeConfig.refresh();
|
||||
}
|
||||
|
||||
/// 更新锁板上的猫眼配置
|
||||
void updateCatEyeSetConfig() async {
|
||||
final int operatingMode = state.catEyeConfig.value.catEyeMode ?? 1; // 自定义模式
|
||||
final int isAllDay = state.catEyeConfig.value.recordMode ?? 1; // 是否是全天
|
||||
final int startTime =
|
||||
state.catEyeConfig.value.recordStartTime ?? 480; // 8:00 AM
|
||||
final int endTime =
|
||||
state.catEyeConfig.value.recordEndTime ?? 1080; // 6:00 PM
|
||||
final int recordingTime = state.catEyeConfig.value.recordTime ?? 0; // 立即录像
|
||||
final int detectionDistance =
|
||||
state.catEyeConfig.value.detectionDistance ?? 0; //0:0.8米
|
||||
final int realTimePicture =
|
||||
state.catEyeConfig.value.realTimePicture ?? 0; // 实时查看
|
||||
final int automaticBrightening =
|
||||
state.catEyeConfig.value.autoLightScreen ?? 1; // 打开逗留警告
|
||||
final int brightScreenTime =
|
||||
state.catEyeConfig.value.autoLightScreenTime ?? 10; // 亮屏持续时间为15秒
|
||||
final int stayWarning = state.catEyeConfig.value.stayWarn ?? 1; // 打开逗留警告
|
||||
final int exceptionWarning =
|
||||
state.catEyeConfig.value.abnormalWarn ?? 1; // 打开逗留警告
|
||||
|
||||
/// 生成配置,非自定义功能字段默认填充0
|
||||
final List<int> config = generateConfig(
|
||||
operatingMode: operatingMode,
|
||||
isAllDay: isAllDay,
|
||||
startTime: startTime,
|
||||
endTime: endTime,
|
||||
recordingTime: recordingTime,
|
||||
detectionDistance: detectionDistance,
|
||||
realTimePicture: realTimePicture,
|
||||
automaticBrightening: automaticBrightening,
|
||||
brightScreenTime: brightScreenTime,
|
||||
stayWarning: stayWarning,
|
||||
exceptionWarning: exceptionWarning,
|
||||
);
|
||||
final List<String>? privateKey =
|
||||
await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
final List<String>? publicKey =
|
||||
await Storage.getStringList(saveBluePublicKey);
|
||||
final List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
|
||||
|
||||
final command = SetSupportFunctionsWithParametersCommand(
|
||||
keyID: state.lockSetInfoData.value.lockBasicInfo!.keyId.toString(),
|
||||
userID: await Storage.getUid(),
|
||||
featureBit: 64,
|
||||
featureParaLength: config.length,
|
||||
featureData: config,
|
||||
token: getTokenList,
|
||||
needAuthor: 1,
|
||||
publicKey: getPublicKeyList,
|
||||
privateKey: getPrivateKeyList,
|
||||
);
|
||||
final packageData = command.packageData();
|
||||
|
||||
// 将 List<int> 转换为十六进制字符串
|
||||
String hexString = packageData
|
||||
.map((byte) => byte.toRadixString(16).padLeft(2, '0'))
|
||||
.join(' ');
|
||||
|
||||
AppLog.log('catEye set: $hexString');
|
||||
|
||||
/// 发送星图
|
||||
StartChartManage().sendBleMessage(
|
||||
bluetoothDeviceName: BlueManage().connectDeviceName,
|
||||
bleStructData: packageData,
|
||||
);
|
||||
}
|
||||
|
||||
// 根据提供的参数生成配置列表
|
||||
List<int> generateConfig({
|
||||
required int operatingMode,
|
||||
required int isAllDay,
|
||||
required int startTime,
|
||||
required int endTime,
|
||||
required int recordingTime,
|
||||
required int detectionDistance,
|
||||
required int realTimePicture,
|
||||
required int automaticBrightening,
|
||||
required int brightScreenTime,
|
||||
required int stayWarning,
|
||||
required int exceptionWarning,
|
||||
}) {
|
||||
// 初始化一个空的列表
|
||||
List<int> config = [];
|
||||
|
||||
// 添加 operatingMode
|
||||
config.add(operatingMode);
|
||||
|
||||
// 如果不是自定义模式,则填充0;否则添加对应的值
|
||||
if (operatingMode != 3) {
|
||||
config.addAll(
|
||||
[0, 0, 0, 0, 0, 0]); // 对应 IsAllDay, StartTime, EndTime, recordingTime
|
||||
} else {
|
||||
config.add(isAllDay);
|
||||
config.addAll(_intToBytes(startTime, 2)); // StartTime 占用2个字节
|
||||
config.addAll(_intToBytes(endTime, 2)); // EndTime 占用2个字节
|
||||
config.add(recordingTime);
|
||||
}
|
||||
|
||||
// 如果不是自定义模式,则 detectionDistance 和 realTimePicture 也填充0
|
||||
if (operatingMode != 3) {
|
||||
config.addAll([0, 0]);
|
||||
} else {
|
||||
config.add(detectionDistance);
|
||||
config.add(realTimePicture);
|
||||
}
|
||||
|
||||
// 自动亮屏、亮屏持续时间、逗留警告、异常警告
|
||||
config.add(automaticBrightening);
|
||||
config.add(brightScreenTime);
|
||||
config.add(stayWarning);
|
||||
config.add(exceptionWarning);
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
// 将整数转换为指定长度的字节表示形式
|
||||
List<int> _intToBytes(int value, int length) {
|
||||
List<int> bytes = [];
|
||||
for (int i = length - 1; i >= 0; i--) {
|
||||
bytes.add((value >> (8 * i)) & 0xFF);
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
|
||||
int _handleTimeToM(int recordStartTime) {
|
||||
// 转换为 DateTime 对象
|
||||
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(recordStartTime);
|
||||
|
||||
// 提取小时和分钟
|
||||
int hour = dateTime.hour;
|
||||
int minute = dateTime.minute;
|
||||
|
||||
print("时: $hour, 分: $minute");
|
||||
|
||||
// 计算从当天0点开始的分钟数
|
||||
int minutesSinceMidnight = dateTime.hour * 60 + dateTime.minute;
|
||||
return minutesSinceMidnight;
|
||||
}
|
||||
|
||||
int _handleGetIntNumber(String recordTime) {
|
||||
if (recordTime == '不录像') {
|
||||
return 0;
|
||||
}
|
||||
if (recordTime == '立即录像') {
|
||||
return 1;
|
||||
}
|
||||
// 使用正则表达式匹配字符串中的数字
|
||||
RegExp regExp = RegExp(r'(\d+)秒');
|
||||
Match? match = regExp.firstMatch(recordTime);
|
||||
|
||||
if (match != null && match.groupCount >= 1) {
|
||||
// 提取出的数字是字符串形式,需要转换成整数
|
||||
int number = int.parse(match.group(1)!);
|
||||
return number;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int _handleDetectionDistance(String s) {
|
||||
if (s == '约0.8米') {
|
||||
return 0;
|
||||
}
|
||||
if (s == '约1.5米') {
|
||||
return 1;
|
||||
}
|
||||
if (s == '约3.0米') {
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_state.dart';
|
||||
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart';
|
||||
|
||||
class CatEyeWorkModeState {
|
||||
@ -31,4 +32,6 @@ class CatEyeWorkModeState {
|
||||
// var selectCatEyeWorkMode = 0.obs; //猫眼工作模式
|
||||
RxList<bool> boolList = <bool>[false, false, false, false].obs;
|
||||
Rx<CatEyeConfig> catEyeConfigData = CatEyeConfig().obs;
|
||||
/// 猫眼配置
|
||||
Rx<CatEyeSetEntity> catEyeConfig = CatEyeSetEntity().obs;
|
||||
}
|
||||
|
||||
@ -238,7 +238,6 @@ class VideoSlotLogic extends BaseGetXController {
|
||||
.map((byte) => byte.toRadixString(16).padLeft(2, '0'))
|
||||
.join(' ');
|
||||
|
||||
AppLog.log('open lock hexString: $hexString');
|
||||
|
||||
/// 发送星图
|
||||
StartChartManage().sendBleMessage(
|
||||
|
||||
@ -199,13 +199,6 @@ class LiveVideoLogic extends BaseGetXController {
|
||||
);
|
||||
final packageData = command.packageData();
|
||||
|
||||
// 将 List<int> 转换为十六进制字符串
|
||||
String hexString = packageData
|
||||
.map((byte) => byte.toRadixString(16).padLeft(2, '0'))
|
||||
.join(' ');
|
||||
|
||||
AppLog.log('open lock hexString: $hexString');
|
||||
|
||||
/// 发送星图
|
||||
StartChartManage().sendBleMessage(
|
||||
bluetoothDeviceName: BlueManage().connectDeviceName,
|
||||
|
||||
@ -4,7 +4,7 @@ import 'flavors.dart';
|
||||
import 'main.dart' as runner;
|
||||
|
||||
Future<void> main() async {
|
||||
F.appFlavor = Flavor.xhj;
|
||||
F.appFlavor = Flavor.pre;
|
||||
// AppLog.log('local调用了main函数');
|
||||
await runner.main();
|
||||
}
|
||||
|
||||
@ -4,7 +4,7 @@ import 'flavors.dart';
|
||||
import 'main.dart' as runner;
|
||||
|
||||
Future<void> main() async {
|
||||
F.appFlavor = Flavor.xhj;
|
||||
F.appFlavor = Flavor.xhj_bundle;
|
||||
F.isLite = true;
|
||||
// AppLog.log('xhj_lite调用了main函数');
|
||||
await runner.main();
|
||||
|
||||
@ -36,15 +36,15 @@ class _GatewayConfigurationWifiPageState
|
||||
backgroundColor: AppColors.mainColor),
|
||||
body: Column(
|
||||
children: <Widget>[
|
||||
// Container(
|
||||
// width: 1.sw,
|
||||
// color: const Color(0xFFF2F6F9),
|
||||
// padding: EdgeInsets.all(15.h),
|
||||
// child: Text(
|
||||
// '不支持5G WiFi网络,请选择2.4G WiFi网络进行配置'.tr,
|
||||
// style: TextStyle(
|
||||
// color: AppColors.darkGrayTextColor, fontSize: 20.sp),
|
||||
// )),
|
||||
Container(
|
||||
width: 1.sw,
|
||||
color: const Color(0xFFF2F6F9),
|
||||
padding: EdgeInsets.all(15.h),
|
||||
child: Text(
|
||||
'不支持5G WiFi网络,请选择2.4G WiFi网络进行配置'.tr,
|
||||
style: TextStyle(
|
||||
color: AppColors.darkGrayTextColor, fontSize: 20.sp),
|
||||
)),
|
||||
Expanded(
|
||||
child: ListView(
|
||||
children: <Widget>[
|
||||
|
||||
@ -2,6 +2,7 @@ import 'dart:async';
|
||||
|
||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:network_info_plus/network_info_plus.dart';
|
||||
import 'package:star_lock/blue/io_gateway/io_gateway_getWifiList.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
|
||||
@ -128,11 +129,26 @@ class GatewayGetWifiListLogic extends BaseGetXController {
|
||||
}, isAddEquipment: true);
|
||||
}
|
||||
|
||||
final NetworkInfo _networkInfo = NetworkInfo();
|
||||
Future<String> getWifiName() async {
|
||||
String ssid = '';
|
||||
ssid = (await _networkInfo.getWifiName())!;
|
||||
ssid = ssid ?? '';
|
||||
ssid = ssid.replaceAll(r'"', '');
|
||||
return ssid ?? '';
|
||||
}
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
super.onReady();
|
||||
|
||||
_initReplySubscription();
|
||||
|
||||
getWifiName().then((String value) {
|
||||
state.phoneConnectedWiFi = value;
|
||||
// update();
|
||||
// AppLog.log('wifiNameTF:${state.wifiNameTF.text} value:$value');
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
@ -20,9 +19,11 @@ class GatewayGetWifiListPage extends StatefulWidget {
|
||||
State<GatewayGetWifiListPage> createState() => _GatewayGetWifiListPageState();
|
||||
}
|
||||
|
||||
class _GatewayGetWifiListPageState extends State<GatewayGetWifiListPage> with RouteAware{
|
||||
class _GatewayGetWifiListPageState extends State<GatewayGetWifiListPage>
|
||||
with RouteAware {
|
||||
final GatewayGetWifiListLogic logic = Get.put(GatewayGetWifiListLogic());
|
||||
final GatewayGetWifiListState state = Get.find<GatewayGetWifiListLogic>().state;
|
||||
final GatewayGetWifiListState state =
|
||||
Get.find<GatewayGetWifiListLogic>().state;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@ -34,7 +35,8 @@ class _GatewayGetWifiListPageState extends State<GatewayGetWifiListPage> with Ro
|
||||
actionsList: <Widget>[
|
||||
TextButton(
|
||||
child: Text(
|
||||
'刷新'.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp),
|
||||
'刷新'.tr,
|
||||
style: TextStyle(color: Colors.white, fontSize: 24.sp),
|
||||
),
|
||||
onPressed: logic.senderGetWifiListWifiAction,
|
||||
),
|
||||
@ -43,17 +45,25 @@ class _GatewayGetWifiListPageState extends State<GatewayGetWifiListPage> with Ro
|
||||
body: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Obx(() => state.wifiNameDataList.value.isNotEmpty ? ListView.builder(
|
||||
itemCount: state.wifiNameDataList.value.length,
|
||||
itemBuilder: (BuildContext c, int index) {
|
||||
Map wifiNameStr = state.wifiNameDataList.value[index];
|
||||
return _messageListItem(wifiNameStr['wifiName'], wifiNameStr['rssi'], () {
|
||||
Get.toNamed(Routers.gatewayConfigurationWifiPage, arguments: {
|
||||
'wifiName': wifiNameStr['wifiName'],
|
||||
'gatewayModel': state.gatewayModel
|
||||
});
|
||||
});
|
||||
}) : NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 64.h)),
|
||||
child: Obx(() => state.wifiNameDataList.value.isNotEmpty
|
||||
? ListView.builder(
|
||||
itemCount: state.wifiNameDataList.value.length,
|
||||
itemBuilder: (BuildContext c, int index) {
|
||||
Map wifiNameStr = state.wifiNameDataList.value[index];
|
||||
return _messageListItem(
|
||||
wifiNameStr['wifiName'], wifiNameStr['rssi'], () {
|
||||
Get.toNamed(Routers.gatewayConfigurationWifiPage,
|
||||
arguments: {
|
||||
'wifiName': wifiNameStr['wifiName'],
|
||||
'gatewayModel': state.gatewayModel
|
||||
});
|
||||
});
|
||||
})
|
||||
: NoData(
|
||||
noDataHeight: 1.sh -
|
||||
ScreenUtil().statusBarHeight -
|
||||
ScreenUtil().bottomBarHeight -
|
||||
64.h)),
|
||||
),
|
||||
SubmitBtn(
|
||||
btnName: '手动配网'.tr,
|
||||
@ -70,8 +80,7 @@ class _GatewayGetWifiListPageState extends State<GatewayGetWifiListPage> with Ro
|
||||
height: 64.h,
|
||||
)
|
||||
],
|
||||
)
|
||||
);
|
||||
));
|
||||
}
|
||||
|
||||
Widget _messageListItem(String wifiName, String rssi, Function() action) {
|
||||
@ -93,7 +102,7 @@ class _GatewayGetWifiListPageState extends State<GatewayGetWifiListPage> with Ro
|
||||
children: <Widget>[
|
||||
SizedBox(
|
||||
height: 79.h,
|
||||
width: 1.sw - 20.w*2,
|
||||
width: 1.sw - 20.w * 2,
|
||||
child: Row(
|
||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: <Widget>[
|
||||
@ -103,7 +112,10 @@ class _GatewayGetWifiListPageState extends State<GatewayGetWifiListPage> with Ro
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
fontSize: 22.sp, color: AppColors.blackColor),
|
||||
fontSize: 22.sp,
|
||||
color: state.phoneConnectedWiFi == wifiName
|
||||
? AppColors.mainColor
|
||||
: AppColors.blackColor),
|
||||
),
|
||||
),
|
||||
// Text(
|
||||
|
||||
@ -1,10 +1,8 @@
|
||||
|
||||
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import '../selectGateway/getGatewayInfo_model.dart';
|
||||
|
||||
class GatewayGetWifiListState{
|
||||
class GatewayGetWifiListState {
|
||||
GatewayGetWifiListState() {
|
||||
var map = Get.arguments;
|
||||
if (map['gatewayModel'] != null && map['gatewayModel'] != '') {
|
||||
@ -12,9 +10,11 @@ class GatewayGetWifiListState{
|
||||
}
|
||||
}
|
||||
|
||||
final RxList<Map<String, String>> wifiNameDataList = <Map<String, String>>[].obs;
|
||||
final RxList<Map<String, String>> wifiNameDataList =
|
||||
<Map<String, String>>[].obs;
|
||||
|
||||
GetGatewayInfoModel gatewayModel = GetGatewayInfoModel();
|
||||
RxBool ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
RxInt sureBtnState = 0.obs;
|
||||
}
|
||||
String? phoneConnectedWiFi;
|
||||
}
|
||||
|
||||
@ -97,9 +97,9 @@ class SelectGatewayListLogic extends BaseGetXController {
|
||||
}
|
||||
|
||||
void startScanBlueList() {
|
||||
state.devices.clear();
|
||||
BlueManage().startScan(2000, DeviceType.gateway, (List<ScanResult> list) {
|
||||
AppLog.log('ScanResultList:$list');
|
||||
state.devices.clear();
|
||||
for (int i = 0; i < list.length; i++) {
|
||||
final ScanResult device = list[i];
|
||||
// if ((device.advertisementData.serviceUuids.isNotEmpty
|
||||
@ -107,7 +107,12 @@ class SelectGatewayListLogic extends BaseGetXController {
|
||||
// : '')
|
||||
// .toString()[31] !=
|
||||
// '1') {
|
||||
state.devices.add(list[i]);
|
||||
if (!state.devices.contains(device)) {
|
||||
state.devices.add(device);
|
||||
} else {
|
||||
// 包含的情况下替换
|
||||
state.devices[state.devices.indexOf(device)] = device;
|
||||
}
|
||||
// AppLog.log('device:${list[i]}');
|
||||
// }
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ class _SelectGatewayTypeNextTipPageState
|
||||
padding: EdgeInsets.all(20.w),
|
||||
child: Center(
|
||||
child: Text(
|
||||
'网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步'.tr,
|
||||
'网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步'.tr,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(fontSize: 18.sp),
|
||||
))),
|
||||
|
||||
@ -1092,7 +1092,7 @@ class StartChartManage {
|
||||
void sendBleMessage({
|
||||
required String bluetoothDeviceName,
|
||||
required List<int> bleStructData,
|
||||
}) {
|
||||
}) async {
|
||||
// 组装上线消息
|
||||
final message = MessageCommand.bleMessage(
|
||||
FromPeerId: FromPeerId,
|
||||
@ -1101,7 +1101,7 @@ class StartChartManage {
|
||||
bluetoothDeviceName: bluetoothDeviceName,
|
||||
bleStructData: bleStructData,
|
||||
);
|
||||
_sendMessage(message: message);
|
||||
await _sendMessage(message: message);
|
||||
}
|
||||
|
||||
/// 销毁资源
|
||||
|
||||
@ -24,18 +24,12 @@ class XSJPushProvider {
|
||||
return;
|
||||
}
|
||||
|
||||
String appKey;
|
||||
if (F.isSKY) {
|
||||
appKey = '7ff37d174c1a568a89e98dad';
|
||||
} else {
|
||||
appKey = '251fc8074820d122b6de58d2';
|
||||
}
|
||||
|
||||
print('jPushKey ${F.jPushKey}');
|
||||
jpush.setup(
|
||||
appKey: appKey,
|
||||
appKey: F.jPushKey,
|
||||
channel: 'flutter_channel',
|
||||
production: false,
|
||||
debug: false,
|
||||
production: F.isProductionEnv,
|
||||
debug: !F.isProductionEnv,
|
||||
);
|
||||
|
||||
jpush.applyPushAuthority(
|
||||
|
||||
@ -15,9 +15,9 @@ class FlavorsImg extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
myFilter = ColorFilterGenerator(name: 'xhj', filters: <List<double>>[
|
||||
if (black) ColorFilterAddons.addictiveColor(-255, -255, -255) else ColorFilterAddons.addictiveColor(1, 22, 93),
|
||||
if (black) ColorFilterAddons.addictiveColor(-255, -255, -255) else ColorFilterAddons.addictiveColor(1 , 22, 93),
|
||||
]);
|
||||
if (F.appFlavor != Flavor.xhj) {
|
||||
if (F.appFlavor != Flavor.xhj && F.appFlavor != Flavor.xhj_bundle) {
|
||||
return child;
|
||||
}
|
||||
return ColorFiltered(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user