Compare commits

..

339 Commits

Author SHA1 Message Date
lollipopkit
0260444ca0 #84 fix: sftp upload 2023-08-03 13:42:30 +08:00
lollipopkit
43d3e576e2 fix: local page 2023-08-02 23:33:56 +08:00
lollipopkit
0038ed347f opt. & new
- opt.: docker page perf
- new: docker stats
2023-08-02 23:07:11 +08:00
lollipopkit
336c31e48d #81 #72 #65 #20 fix 2023-08-02 20:03:02 +08:00
lollipopkit
411bef9320 fix: LocalStoragePage.initDir 2023-08-02 19:33:52 +08:00
lollipopkit
027b9cc4f7 #83 opt.: batch delete servers 2023-08-01 13:55:05 +08:00
lollipopkit
33932f7428 fix: import backup 2023-08-01 13:41:00 +08:00
lollipopkit
0f83d10bfa opt.: cancel sftp mission 2023-07-29 18:24:22 +08:00
lollipopkit
e13c5910ec #78 opt.: alter url 2023-07-29 16:53:57 +08:00
lollipopkit
7f4dcc1357 opt.
- add help for ssh virt keys
- rm unused lib
2023-07-29 16:24:47 +08:00
lollipopkit
1163f2e418 opt.: TimeSeq 2023-07-28 20:21:15 +08:00
lollipopkit
6045e7e7f0 fix: sftp dl 2023-07-28 19:08:34 +08:00
lollipopkit
6803e9fa40 Merge pull request #79 from azkadev/main
Add Indonesian Language And Fix Editor Page
2023-07-28 17:26:13 +08:00
Your Name
f1852aa83a update 2023-07-28 15:21:51 +07:00
Your Name
287df4a1cc Add Indonesian Language 2023-07-28 15:21:25 +07:00
Your Name
177b3ab66a Fix editor on open 2023-07-28 15:04:19 +07:00
lollipopkit
df4836458f #78 fix 2023-07-28 14:11:38 +08:00
lollipopkit
389d1753c4 #78 new: alter host 2023-07-28 13:59:32 +08:00
lollipopkit
ed3201db6d new: delete all servers btn 2023-07-27 13:04:49 +08:00
lollipopkit
08a4dba659 #77 new: also when backing app 2023-07-25 12:24:26 +08:00
lollipopkit
9e6f386b28 #77 opt. 2023-07-21 16:57:17 +08:00
lollipopkit
eef38f0949 #74 probably fix 2023-07-21 16:56:50 +08:00
lollipopkit
262b4486e4 #73 opt.: reorderable 2023-07-21 15:05:09 +08:00
lollipopkit
aac556f769 #76 add translation 2023-07-21 14:40:04 +08:00
lollipopkit
b443870e62 #76 opt. 2023-07-21 14:37:29 +08:00
lollipopkit
0d5707a1df #76 new: switch net view 2023-07-21 14:25:07 +08:00
lollipopkit
5a5e2fd1d1 #73 fix & opt.
- fix: reorder list default drag
- opt.: android home widget grey text
2023-07-20 18:26:17 +08:00
lollipopkit
7f8fbfead3 #26 new & fix
- new: click to refresh
- fix: SharedPreference setPrefix
2023-07-19 19:23:05 +08:00
lollipopkit
2ed578c0ca update README 2023-07-19 18:39:57 +08:00
lollipopkit
9ce221935e #26 android home widget 2023-07-19 18:26:10 +08:00
lollipopkit
0ee55d4873 #26 new: ios home widget 2023-07-16 22:46:32 +08:00
lollipopkit
814e9c853a Add translation 2023-07-08 15:09:01 +08:00
lollipopkit
291c737a40 #54 fix order 2023-07-08 14:18:15 +08:00
lollipopkit
0bc176b603 #54 run multi snippets on multi servers 2023-07-08 11:23:21 +08:00
lollipopkit
fefd3f9701 #54 run multiple snippets 2023-07-08 00:12:15 +08:00
lollipopkit
cb16b3a8b6 fix 2023-07-07 21:09:29 +08:00
lollipopkit
bb50fbc589 #54 snippet group 2023-07-07 20:37:50 +08:00
lollipopkit
d8155e7771 update deps. 2023-06-30 20:59:38 +08:00
lollipopkit
6d6048bc5c fix 2023-06-27 14:40:10 +08:00
lollipopkit
92e2e2a75f new: fullscreen rotation angel 2023-06-27 13:31:35 +08:00
lollipopkit
76e8a1efca new: set light/dark editor theme 2023-06-27 12:52:11 +08:00
lollipopkit
9ffe5583fd #64 opt. for process page 2023-06-27 12:27:16 +08:00
lollipopkit
0022294ea4 #71 new & opt.
- ssh page virt key long press
- custom ssh virt keys
2023-06-27 00:41:56 +08:00
lollipopkit
dc63d902e5 opt. for settings page 2023-06-26 21:00:13 +08:00
lollipopkit
f0b31a9b08 #65 new: custom keyboard type 2023-06-23 16:59:27 +08:00
lollipopkit
743e5bfbff #64 new: process page 2023-06-23 14:30:35 +08:00
lollipopkit
06d6500ef6 opt. & fix
opt.: upload file
fix: surplus server order
opt.: sftp view
2023-06-21 18:30:52 +08:00
lollipopkit
3a8e189dd7 new: server tab process 2023-06-21 17:47:57 +08:00
lollipopkit
625bc280f0 opt.: auto switch status bar 2023-06-21 16:57:06 +08:00
lollipopkit
0aff5b3b72 opt. for fullscreen jitter 2023-06-20 21:04:55 +08:00
lollipopkit
2095b79b9a new: full screen jitter 2023-06-08 22:45:38 +08:00
lollipopkit
0ddfc4ec75 new: full screen 2023-06-08 22:17:26 +08:00
lollipopkit
342c3ea295 new: launch image 2023-06-08 20:48:16 +08:00
lollipopkit
7b1c1b9a5a opt. for performance 2023-06-05 17:51:52 +08:00
lollipopkit
378baf589a rm: linux dist logos 2023-06-05 16:50:22 +08:00
lollipopkit
d2cdbe4774 Merge branch 'main' of https://github.com/lollipopkit/flutter_server_box 2023-06-05 16:42:53 +08:00
lollipopkit
d66e570e01 opt.: use ValueBuilder 2023-06-05 16:39:54 +08:00
lollipopkit
88cc6542a9 Update LICENSE 2023-06-05 16:38:28 +08:00
lollipopkit
2ab2306469 Merge pull request #62 from its-tom/main
fix translation (german), use save icon for servers & snippets
2023-06-04 18:50:54 +08:00
Thomas
86ae4df790 fix translation (german), use save icon for servers & snippets 2023-06-04 12:46:06 +02:00
lollipopkit
a11507d0d2 Update README.md 2023-06-04 17:42:59 +08:00
lollipopkit
5600d713a6 new: app icon 2023-06-04 17:19:22 +08:00
lollipopkit
261b8e9d29 opt. 2023-06-03 21:15:26 +08:00
lollipopkit
8c25b5e60b #33 new: upload file to sftp from file picker 2023-06-02 21:51:39 +08:00
lollipopkit
f0bf95a7d2 #33 new: upload file in sftp 2023-06-01 16:07:09 +08:00
lollipopkit
026e951604 #57 AMOLED theme 2023-06-01 15:18:54 +08:00
lollipopkit
6091cd0da8 new: server tag animation 2023-05-31 18:10:18 +08:00
lollipopkit
55a13799b2 new: tag rename 2023-05-31 17:56:08 +08:00
lollipopkit
d24fe5ff5d opt. for tag 2023-05-31 17:19:56 +08:00
lollipopkit
472a441c8e new: server tag 2023-05-30 22:44:45 +08:00
lollipopkit
92ffed6541 #25 new: sftp upload 2023-05-30 19:49:54 +08:00
lollipopkit
a1e80fd806 #54 new: grouped snippet & tab snippet 2023-05-30 18:05:46 +08:00
lollipopkit
96438313a1 update ISSUE_TEMPLATE 2023-05-29 17:37:24 +08:00
lollipopkit
0837f1619a Update README.md 2023-05-28 19:49:17 +08:00
lollipopkit
edaffb736c new: open sftp in ssh 2023-05-28 18:58:38 +08:00
lollipopkit
06be4503ca #24 #25 #33 new: sftp file edit 2023-05-28 18:21:03 +08:00
lollipopkit
dbabe81e3c new: editor custom theme 2023-05-28 16:25:12 +08:00
lollipopkit
68c1fe4943 #24 #25 #33 new: editor 2023-05-28 15:03:02 +08:00
lollipopkit
ae822de737 opt.
- `TerminalColors`
- ssh virtual key auto switch
2023-05-27 20:43:40 +08:00
lollipopkit
02494651fc fix & opt.
- fix: ssh paste
- opt.: docker logs & shell
2023-05-27 18:58:38 +08:00
lollipopkit
4f45ce3f50 Merge branch 'main' of https://github.com/lollipopkit/flutter_server_box 2023-05-27 17:49:12 +08:00
lollipopkit
5d774bfd33 Merge pull request #51 from kalashnikov/main
Support zh_TW
2023-05-27 17:48:39 +08:00
lollipopkit
b04c2a9693 #51 new: custom language 2023-05-27 17:47:48 +08:00
Kala Kuo
371f60c68a Fix connection problem in macos 2023-05-27 16:54:46 +08:00
Kala Kuo
79ebd89e8b Support zh_TW 2023-05-27 16:51:03 +08:00
lollipopkit
a8194319b6 #50 new: docker shell 2023-05-27 14:24:54 +08:00
lollipopkit
7a211b9a55 fix: cards order 2023-05-26 20:09:13 +08:00
lollipopkit
00fdcb1ee8 Server detail page cards support sorting 2023-05-26 18:03:43 +08:00
lollipopkit
20ef9d4575 opt. 2023-05-26 17:01:52 +08:00
lollipopkit
c1c009863d Update README.md 2023-05-26 13:18:37 +08:00
lollipopkit
c4594559a2 opt.: custom diskIgnorePath 2023-05-26 12:46:47 +08:00
lollipopkit
46350b7522 #48 display all support devices temperature 2023-05-25 16:44:26 +08:00
lollipopkit
29683572b9 #46 SSH term fontSize 2023-05-25 15:21:57 +08:00
lollipopkit
472599498e #42 new: docker logs 2023-05-18 22:06:12 +08:00
lollipopkit
a9fa981e96 fix: servers missed due to ServerOrder 2023-05-16 16:47:21 +08:00
lollipopkit
82ed2e70dc #40 new: docker container restart 2023-05-16 16:45:46 +08:00
lollipopkit
2161596efc opt. 2023-05-14 17:39:34 +08:00
lollipopkit
5714e26c4d Update ISSUE_TEMPLATE 2023-05-13 21:55:51 +08:00
lollipopkit
eedeff6caa Merge branch 'main' of https://github.com/lollipopkit/flutter_server_box 2023-05-13 19:41:20 +08:00
lollipopkit
d7c0be045a opt. UI 2023-05-13 19:40:18 +08:00
lollipopkit
a61c440484 Update issue templates 2023-05-13 15:14:35 +08:00
lollipopkit
91b2145c6e Merge pull request #37 from its-tom/main
UI Improvements
2023-05-12 21:55:00 +08:00
Thomas
7684c280bc remove unnecessary padding 2023-05-12 15:37:30 +02:00
Thomas
d0656ba157 Merge branch 'lollipopkit:main' into main 2023-05-12 15:30:17 +02:00
Thomas
62d8285c1a show Menu when clicking on ListTile, correct german typo, use multiline for snippets 2023-05-12 15:29:44 +02:00
lollipopkit
fee02a53b6 fix: typo 2023-05-12 21:18:41 +08:00
lollipopkit
cbeaa9705f #35 new: servers tab reorderable 2023-05-12 18:35:56 +08:00
lollipopkit
2ee0c6f995 Merge pull request #36 from its-tom/main
Add german
2023-05-11 23:33:36 +08:00
Thomas
f72ec4452b Merge branch 'lollipopkit:main' into main 2023-05-11 17:18:35 +02:00
Thomas
9239c04c4b add german (final) 2023-05-11 17:18:22 +02:00
lollipopkit
9b0bb414db migrate: flutter 3.10.0 2023-05-11 12:24:39 +08:00
lollipopkit
91f97e52b0 #34 fix & new
- fix: `ping`
- new: support busybox `ping`
- new: flutter 3.10.0
2023-05-11 12:06:30 +08:00
Thomas
c7cbf1a9f3 german (only partly) 2023-05-10 22:25:12 +02:00
lollipopkit
4f82eb09d8 #30 fix: parse mem 2023-05-10 13:25:46 +08:00
lollipopkit
c1d1af8c01 opt.: popupmenu 2023-05-09 22:04:45 +08:00
lollipopkit
b4f3fce64a #30 fix: context.pop() 2023-05-09 19:49:31 +08:00
lollipopkit
3f9f589178 constraint: share_plus 6.3.2 2023-05-08 17:43:25 +08:00
lollipopkit
6a4d4f9bca fix: sysVer of older CentOS 2023-05-08 17:30:39 +08:00
lollipopkit
7f16c27dcf opt. 2023-05-08 16:25:31 +08:00
lollipopkit
a2361da560 opt. for pkg 2023-05-07 20:44:15 +08:00
lollipopkit
ffae93cc72 #29 opt. for TextInput 2023-05-07 18:25:30 +08:00
lollipopkit
29ea43a10f #29 opt. for material 3 2023-05-07 16:34:21 +08:00
lollipopkit
5afa543ba5 migrate: material 3 2023-05-07 01:28:51 +08:00
lollipopkit
e932241df0 Merge pull request #29 from its-tom/main
Material 3
2023-05-06 20:46:19 +08:00
Thomas
7505f77b4a use ColorSchemeSeed instead of own ColorScheme 2023-05-06 13:05:58 +02:00
Thomas
e61597b3ce use Material3, changed color selection 2023-05-06 12:53:32 +02:00
lollipopkit
90e25856cf rewrite pkg 2023-04-27 18:46:13 +08:00
lollipopkit
3a17a24774 Merge pull request #28 from lollipopkit/fix/synology
Fix & opt.
2023-04-27 16:24:31 +08:00
zhaoyingbo
50e0a0b688 feat: Modify the header image to the right size 2023-04-27 16:18:40 +08:00
zhaoyingbo
4cb7dc03a7 feat: Use hostname when Sysver is unknown 2023-04-27 13:02:48 +08:00
zhaoyingbo
658d6ec0c8 fix: parseDisk error in deal with multiline data 2023-04-27 12:59:27 +08:00
lollipopkit
6d7a47a228 update README.md 2023-04-23 14:52:01 +08:00
lollipopkit
167d65a97b fix: dio < 5.0.0 vulnerability 2023-04-23 14:51:46 +08:00
lollipopkit
71243ea1fe opt.: servers list -> map 2023-04-23 14:08:46 +08:00
lollipopkit
bd608ce06f update README.md 2023-04-23 13:04:12 +08:00
lollipopkit
fe3055f77c auto reconnect & opt. perf. 2023-04-23 12:54:54 +08:00
lollipopkit
1ccda52f6f update README.md 2023-04-20 12:40:12 +08:00
lollipopkit
9cdfd86f70 replace: context.pop 2023-04-19 20:58:29 +08:00
lollipopkit
e709262477 fix: update changelog & backup restore 2023-04-19 20:52:02 +08:00
lollipopkit
20d2817c8d fix: moveBg during share 2023-04-19 20:18:54 +08:00
lollipopkit
a7269ee68a #25 fix sftp rm 2023-04-19 20:18:27 +08:00
lollipopkit
552e2738cd opt. for backup 2023-04-19 10:51:10 +08:00
lollipopkit
216d64e3eb new: license dialog 2023-04-18 22:37:19 +08:00
lollipopkit
f903a1da55 update: update api 2023-04-18 22:33:56 +08:00
lollipopkit
f2b1158eda update build script 2023-04-18 21:47:42 +08:00
lollipopkit
1d797f8d16 flutter 3.7.11 2023-04-17 13:09:59 +08:00
lollipopkit
9e503e4901 readd: paste in ssh 2023-04-17 12:55:47 +08:00
lollipopkit
bf22309fe5 opt. for performance 2023-04-16 19:41:54 +08:00
lollipopkit
a3537a67c2 #25 fix sftp rmdir 2023-04-16 16:26:50 +08:00
lollipopkit
8ba888a5b3 #25 snippet in SSH 2023-04-16 14:08:10 +08:00
lollipopkit
fd2d59b1e0 fix: backup restore failed 2023-04-16 11:59:00 +08:00
lollipopkit
5c2cc5e5e4 fix: Android moveBg during picking file 2023-04-05 15:15:17 +08:00
lollipopkit
fe7ea04011 boost loading speed 2023-04-05 15:03:18 +08:00
lollipopkit
19baff5dde opt. & fix.
fix: setting page update item display issue.
fix: `bgRun` condition issue.
opt: `r_upgrade` use 0.3.8+2
2023-04-04 17:38:00 +08:00
lollipopkit
0ac6984576 #21 font setting only take effect to SSH 2023-04-04 17:35:37 +08:00
lollipopkit
de0eedb2cb xterm.dart use git 2023-03-28 17:36:06 +08:00
lollipopkit
30dddf462e #22 Add switch for run in bg 2023-03-28 17:35:49 +08:00
lollipopkit
abee470afc Android: support background process 2023-03-28 17:12:44 +08:00
lollipopkit
42d8505504 Update README.md 2023-03-27 21:25:20 +08:00
lollipopkit
3c481cf61c Update README.md 2023-03-27 21:16:16 +08:00
lollipopkit
55c96031f7 fix: ios debug: local network 2023-03-27 15:59:05 +08:00
lollipopkit
2ea061d324 backup add docker 2023-03-27 15:09:19 +08:00
lollipopkit
2747df64dd #19 fix & opt
- opt: android default dir move to external storage
- fix: err when font not exist
2023-03-27 13:56:17 +08:00
lollipopkit
9e3afe98a9 fix: ThemeMode not works under copied data 2023-03-21 15:36:35 +08:00
lollipopkit
7732ce5dbb make.dart: auto kill java 2023-03-21 15:03:03 +08:00
lollipopkit
f1ae924724 fix: countly double init due to rebuild app 2023-03-21 15:02:43 +08:00
lollipopkit
4cc72328a7 manually restart app 2023-03-21 14:46:30 +08:00
lollipopkit
43e32775a3 apply font to ssh term 2023-03-21 14:12:44 +08:00
lollipopkit
27e7653587 #15 support: select font 2023-03-21 13:15:36 +08:00
lollipopkit
89050daf4e opt: only display token on iOS 2023-03-18 17:52:25 +08:00
lollipopkit
2cc52fcee6 #11 Update README.md 2023-03-18 00:16:01 +08:00
lollipopkit
3f3240040a opt. 2023-03-18 00:09:24 +08:00
lollipopkit
350d248776 Add issue translate bot 2023-03-16 12:35:27 +08:00
lollipopkit
bb15f34615 #17 ios production env no token 2023-03-16 11:47:06 +08:00
lollipopkit
58b950f814 #14 add ssh log 2023-03-15 13:37:19 +08:00
lollipopkit
c2e822f49d new: PlatformType 2023-03-13 12:02:48 +08:00
lollipopkit
4c4153ef98 new: support msg push 2023-03-12 16:06:51 +08:00
lollipopkit
35b5d1ccb5 Add l10n files 2023-03-11 19:02:40 +08:00
lollipopkit
065fd15429 decrease res files 2023-03-11 19:02:22 +08:00
lollipopkit
5666a23e00 #12 new: custom theme mode 2023-02-25 19:58:37 +08:00
lollipopkit
69fae4dd21 fix: android sftp downloaded files share failed 2023-02-21 17:32:22 +08:00
lollipopkit
2986f80f89 opt: auto rm pwd in key page for safe 2023-02-21 17:12:01 +08:00
lollipopkit
e423e56152 try solve file_picker 2023-02-18 13:18:35 +08:00
lollipopkit
9c00dc8a54 try to solve file_picker on ios 2023-02-17 18:57:16 +08:00
lollipopkit
558721fa79 opt.
opt: check `private key` size
opt: expand key list in default
2023-02-17 16:49:41 +08:00
lollipopkit
0c198c23fc opt: check private key size 2023-02-17 16:29:46 +08:00
lollipopkit
99aa0fc1f5 new: pull to refresh on server tab 2023-02-17 15:55:34 +08:00
lollipopkit
1aac166c43 new: pick from file to add key #9 2023-02-16 12:55:23 +08:00
lollipopkit
28a6067033 new: swap view for #10 2023-02-16 12:19:38 +08:00
lollipopkit
9c3b822311 new & opt
new: Flutter 3.7.3
opt: for `ping` page
2023-02-13 17:51:36 +08:00
lollipopkit
ba44649ce1 fix: #8 2023-02-13 14:49:02 +08:00
lollipopkit
e7b1773e5c opt: settings page 2023-02-06 15:32:36 +08:00
lollipopkit
3feef3936c new & opt
new: support set maxRetryCount of server reconnection
opt: server detail UI
opt: server provider
opt: `ssh` page on Android
2023-02-03 13:12:39 +08:00
lollipopkit
7837fa4339 fix: ssh use SafeArea 2023-02-02 18:47:07 +08:00
lollipopkit
82a201d3dc new: support pick ssh term theme 2023-02-02 16:52:30 +08:00
lollipopkit
c479d18714 new & opt
new: `net` total in & out bytes
opt: i18n for `ssh`
opt: disk path ignore
2023-02-02 13:11:21 +08:00
lollipopkit
469b9fe8cd fix: netspeed bytes too large 2023-02-02 12:04:01 +08:00
lollipopkit
c47e24ac5b ssh: long press menu bar 2023-02-01 23:36:21 +08:00
lollipopkit
1063916474 ssh: support copy/paste, fix ios backspace 2023-02-01 21:34:16 +08:00
lollipopkit
a63e240ce0 fix & opt
fix: whether display docker edit host
opt: docker funcs
2023-02-01 18:24:56 +08:00
lollipopkit
1a8d572fbd fix: btn theme color 2023-02-01 17:48:20 +08:00
lollipopkit
21ac323ed1 fix & opt
fix: cant ping when launch page is ping
fix: button text color not primaryColor
opt: getting primaryColor
2023-02-01 17:18:46 +08:00
lollipopkit
2faea10d61 server connect: max try 7 times 2023-02-01 13:34:45 +08:00
lollipopkit
04cf5b65ce opt. proj struct 2023-02-01 13:00:02 +08:00
lollipopkit
4d741ac82a fix & opt
fix: android in-app upgrade
fmt: proj struct
opt: fetch primaryColor
2023-02-01 12:52:40 +08:00
lollipopkit
068089d207 fix cpu temp padding 2023-02-01 10:37:06 +08:00
lollipopkit
5ebb4e6b3e ssh: more tip 2023-01-29 22:23:18 +08:00
lollipopkit
19e0b283ae ssh page opt: performance & auto exit 2023-01-29 22:03:25 +08:00
lollipopkit
7e8600ab6d fix typo 2023-01-29 17:51:23 +08:00
LollipopKit
7c0e01d0d5 fix & opt.
fix: net iface parse
opt: `ssh` page auto unpress `ctrl or alt` after call
opt: enable translation for menu
opt: add confirm to `docker` page
2023-01-29 17:39:27 +08:00
LollipopKit
f3c670d82c opt. proj struct 2023-01-29 16:56:40 +08:00
lollipopkit
49f9b0b179 ssh page: rm appbar 2023-01-29 15:11:01 +08:00
lollipopkit
47861b1e0b rm: ssh term size 2023-01-29 13:56:39 +08:00
lollipopkit
923667d57c opt. for ssh 2023-01-29 00:09:20 +08:00
lollipopkit
e6458a1d7f opt. for ssh page 2023-01-28 23:39:03 +08:00
lollipopkit
f109aca484 ssh: more virtual keys 2023-01-28 23:10:59 +08:00
lollipopkit
a518dca0ca opt. 2023-01-28 21:16:53 +08:00
lollipopkit
be1a162632 fix & opt. 2023-01-28 15:35:19 +08:00
lollipopkit
0e8a8056f8 README: update screenshot 2023-01-28 14:08:20 +08:00
lollipopkit
587e0a4640 opt. for ssh 2023-01-28 13:57:35 +08:00
lollipopkit
9608c9139c init ssh 2023-01-28 00:17:36 +08:00
lollipopkit
913ce312de make running snippet more convenient 2023-01-27 23:06:47 +08:00
lollipopkit
b6ab4b7fde feat. & opt.
switch for distribution logo
opt. for server detail page
2023-01-27 21:46:52 +08:00
lollipopkit
7c6649f941 build script: use fvm 2023-01-27 21:43:17 +08:00
lollipopkit
7c84957230 pkg mgr support zypper pacman opkg 2023-01-27 19:19:11 +08:00
lollipopkit
092c3f522a opts: new logs page 2023-01-27 17:05:47 +08:00
lollipopkit
877b93ae3a add LICENCE 2023-01-26 16:34:36 +08:00
lollipopkit
565bc8012a rename: apt -> pkg 2023-01-26 16:19:09 +08:00
lollipopkit
96034f9487 ready for more pkg manager 2023-01-26 16:11:34 +08:00
lollipopkit
0522cfef1c fix openUrl 2023-01-26 14:38:04 +08:00
lollipopkit
0ecc321115 migrate Flutter 3.7.0 2023-01-26 14:37:52 +08:00
lollipopkit
9c8f9c3b9f auto paste in private key page 2023-01-09 13:46:02 +08:00
lollipopkit
b2e2d4c603 add a tip 2022-12-20 15:18:40 +08:00
lollipopkit
599bd2cfd3 improved sftp 2022-12-20 15:11:22 +08:00
LollipopKit
6bda94bd7b fix: can't quit app 2022-12-20 13:40:48 +08:00
lollipopkit
cfd28c3009 fmt 2022-12-11 15:31:12 +08:00
lollipopkit
7e01c4cbb3 support docker image management 2022-12-11 15:03:02 +08:00
lollipopkit
78b46998d1 fix SSHClient.exec 2022-12-11 14:08:08 +08:00
lollipopkit
d43d251d92 support add docker container 2022-12-11 11:05:13 +08:00
lollipopkit
1c29b76455 update README.md 2022-12-10 23:17:18 +08:00
lollipopkit
611518f790 opt. for docker & apt 2022-12-10 23:14:55 +08:00
Junyuan Feng
62a1122174 new macos folder 2022-12-04 21:42:48 +08:00
Junyuan Feng
ca17af30cf rm server tab pull to refresh 2022-12-04 15:53:42 +08:00
Junyuan Feng
3998f549e4 fix: IME awayls float 2022-12-04 15:52:41 +08:00
Junyuan Feng
9541c0c7ab android use compileSdk 33 2022-12-04 15:51:30 +08:00
Junyuan Feng
475bb8c4b0 migrate Flutter 3.3.9 2022-12-02 21:39:55 +08:00
Junyuan Feng
a0b68862fc fix auto hide IME 2022-12-02 21:39:33 +08:00
Junyuan Feng
bfd31e561c optimize ping page & make.dart 2022-11-07 20:15:39 +08:00
Junyuan Feng
5b8468effa rm dep. menu & optimize 2022-11-07 19:54:26 +08:00
Junyuan Feng
bd04fd3f1a rm dep. dropdownbtn 2022-11-07 19:12:17 +08:00
Junyuan Feng
398c49bb99 使用 Hive Object 2022-11-05 23:08:56 +08:00
Junyuan Feng
c036b78708 增加 armbian 头图 2022-11-05 21:58:05 +08:00
Junyuan Feng
7f1bd06422 Optimzed & Flutter 3.3.4 2022-10-21 17:50:13 +08:00
Junyuan Feng
06302d7162 fix
- auto get user id for rootless docker
2022-06-05 11:20:35 +08:00
Junyuan Feng
57ecdddc76 update readme 2022-05-31 11:54:09 +08:00
Junyuan Feng
04db5a82b9 fix docker parse error
- rootless docker socket host
- version & edition
2022-05-31 11:02:59 +08:00
Junyuan Feng
bb1bf9219c feat & fix
- support openwrt
- save server info failed if connect error
- support ssh 'none' auth
2022-05-29 18:34:55 +08:00
Junyuan Feng
3ed476275f update readme 2022-05-25 13:51:37 +08:00
Junyuan Feng
9cbd29d3c1 fix
- range error when no upgradeable
- remove auto input pwd when apt pwd request
2022-05-25 13:29:51 +08:00
Junyuan Feng
8cbe76d9ff add thanks 2022-05-25 13:18:51 +08:00
Junyuan Feng
1bd673a164 fix #3
- server edit page display bugs, include userPubKey and pubKeyIdx
2022-05-25 13:10:30 +08:00
Junyuan Feng
4148aac31b add feedback 2022-05-24 13:43:54 +08:00
Junyuan Feng
64196a7ba6 fix & opt
- display when client.run no result
- remove dep. marquee
2022-05-24 13:25:44 +08:00
Junyuan Feng
cb5aed8e79 fix & opt
- apt/yum if not root, auto try saved pwd
- ServerPrivateInfo.authorization: Object => String pwd
- fix apt parse: caused by irrelevant output
- serverprovider replace _servers[idx] with s
2022-05-24 12:44:12 +08:00
Junyuan Feng
f60b09abe4 update deps
- support private key rsa algorithm
2022-05-23 17:48:00 +08:00
Junyuan Feng
d4368f5084 feat.
- add FocusNode and onSubmitted to TextField
2022-05-23 10:59:10 +08:00
Junyuan Feng
330ff9a621 fix & opt
- fix duplicated ssh connecting
- opt backup page ui
2022-05-23 10:35:42 +08:00
Junyuan Feng
0fdc1b784b feat. & fix.
- support backup & restore
- fix when client.run empty return
2022-05-22 13:02:54 +08:00
Junyuan Feng
228f228d44 upgrade & opt
- flutter 3.0.1
- show snackbar when no server to ping
- server detail page replace nice to iowait
- make script show stdout when error
2022-05-21 20:39:52 +08:00
Junyuan Feng
b4d42eecf3 fix
- multi dialog on apt pwd request
- update dialog condition error
2022-05-20 19:51:14 +08:00
Junyuan Feng
0533766c1c opt & fix
- update make script (taget mac)
- only set system overlay once
2022-05-19 16:06:12 +08:00
Junyuan Feng
36d7dc7bb2 opt
- optimize TextField
- opt apt pwd req times
- use logger in update.dart
2022-05-15 13:48:57 +08:00
Junyuan Feng
282443a548 migrate flutter3.0 2022-05-12 15:06:48 +08:00
Junyuan Feng
bfe7140a44 fix & opt
- fix docker not found regexp
- use en_US in docker cmd
-
2022-05-12 09:50:28 +08:00
Junyuan Feng
7e8e0e2efc optimized apt experience 2022-05-10 21:49:17 +08:00
Junyuan Feng
49f70fe41a fix update in multi-platform 2022-05-10 18:15:04 +08:00
Junyuan Feng
50762d585c fix & opt
- fix sftp downloaded page bottom path bg color error
- apt/yum add chinese
- urltext add textalign
2022-05-08 09:55:07 +08:00
Junyuan Feng
6f30976ef7 fix & opt
- sftp download unknown spent time
- shareFiles return bool
2022-05-08 09:07:03 +08:00
Junyuan Feng
b0c3cd3834 fix & optimize
- fix downloading page unbond size
- auto dispose isolate
2022-05-07 23:05:31 +08:00
Junyuan Feng
d224ad8cf8 Optimize
- divide mkdir/newfile
2022-05-07 22:36:32 +08:00
Junyuan Feng
b824e06736 New feat
- SFTP download
- open downloaded files in other apps
2022-05-07 22:15:09 +08:00
Junyuan Feng
74a933eb6e set LANG in shell 2022-05-05 16:53:35 +08:00
Junyuan Feng
29e3ee0156 i18n support 2022-05-05 16:07:55 +08:00
Junyuan Feng
f9aa3b1728 Fix scorll error. 2022-05-05 13:31:45 +08:00
Junyuan Feng
521ff998af Empty. 2022-05-04 21:08:03 +08:00
Junyuan Feng
b0165c3313 New splash bg color. 2022-05-04 20:35:56 +08:00
Junyuan Feng
2a0cc5ca30 Update & Fix
- update deps.
- splash support dark bg
- fix parse cpu temp
2022-05-04 19:44:13 +08:00
Junyuan Feng
52b82af52c Fix & Optimize
- fix ping when results is empty
- optimize ping speed
2022-05-03 20:26:00 +08:00
Junyuan Feng
5c59833233 Fix exception caused by LANG > Chinese 2022-05-03 12:06:18 +08:00
Junyuan Feng
9e2d49773f New Ping, use servers to ping 2022-05-03 11:42:30 +08:00
Junyuan Feng
fd1b2fc7b0 auto scroll on apt/yum upgrading. 2022-05-03 09:17:42 +08:00
Junyuan Feng
a06ea82f2c build script will update project.pbxproj versions. 2022-05-03 09:16:06 +08:00
Junyuan Feng
9b7d33369a fix
- docker ps item parse
- parse issue in fish (shell)
- make.dart path
2022-04-29 11:59:27 +08:00
Junyuan Feng
9663e4174d New make.dart 2022-04-15 19:48:43 +08:00
Junyuan Feng
c524db9f59 Improve animation by using SKSL 2022-04-15 19:21:40 +08:00
Junyuan Feng
4274e8bed1 Snippet support import/export. 2022-04-07 20:00:06 +08:00
Junyuan Feng
fa73c4feee Support yum. 2022-04-07 18:56:33 +08:00
Junyuan Feng
00cfd0f88d Remove SFTP download 2022-04-06 13:23:54 +08:00
Junyuan Feng
f8201f9542 SFTP support download. listDIr() support rollback. 2022-04-04 15:42:56 +08:00
Junyuan Feng
f0081e0587 Support APT/Docker 2022-03-10 15:25:14 +08:00
Junyuan Feng
e6e08dc407 Center title in SFTP/Apt 2022-03-08 18:07:52 +08:00
Junyuan Feng
7a5516792c Change SFTP to single column 2022-03-08 18:00:46 +08:00
Junyuan Feng
241002c3ea Support Docker start/stop/remove 2022-03-08 17:40:32 +08:00
Junyuan Feng
34e6b99297 APT/Docker manage
- view apt update
- view docker container
2022-03-08 14:47:57 +08:00
Junyuan Feng
b800bd91fd Fix saving not encypted key 2022-03-07 19:24:13 +08:00
Junyuan Feng
07fbf78853 Fix get mem failed in chinese 2022-03-02 11:14:32 +08:00
Junyuan Feng
bb80f093e0 Merge pull request #1 from RainSunMe/fix-get-mem
fix: can not get chinese mem
2022-03-02 10:56:40 +08:00
RainSun
fa8ffdc656 fix: can not get chinese mem 2022-03-02 10:53:01 +08:00
Junyuan Feng
f07d33a1d6 SFTP init. 2022-02-18 13:32:50 +08:00
Junyuan Feng
282e61afac 50% sftp 2022-02-10 20:27:30 +08:00
Junyuan Feng
feb3b10f1f Improve. 2022-02-09 11:29:56 +08:00
Junyuan Feng
1184841c24 Check drawer state when back. 2022-02-08 21:33:14 +08:00
Junyuan Feng
02a8a38a0a Update screenshots. 2022-02-08 21:21:35 +08:00
Junyuan Feng
d70cbb66d2 New UI. 2022-02-08 21:12:38 +08:00
Junyuan Feng
4636219b6a Update README 2022-02-08 19:18:21 +08:00
Junyuan Feng
b7b8d33bd9 Fix update server info failed. Display temp&uptime 2022-02-08 19:04:55 +08:00
Junyuan Feng
10c874e7d4 Migrate Flutter 2.10.0 2022-02-08 16:53:28 +08:00
Junyuan Feng
5bf5a4b67e Improve 2022-02-08 15:40:26 +08:00
Junyuan Feng
1bd43829bb Improve UI. Rounded Card. 2022-02-04 18:52:35 +08:00
Junyuan Feng
026d203608 Improve efficiency of data fetching 2022-02-02 13:23:54 +08:00
Junyuan Feng
5d9b19407f Auto unfocus to hide IME 2022-01-31 16:26:01 +08:00
Junyuan Feng
86be556a22 Improve 2022-01-19 16:54:08 +08:00
Junyuan Feng
e65d30590a Add Ping. Support launch page setting. 2022-01-18 13:35:00 +08:00
Junyuan Feng
86a700d0bb Optimize layout 2022-01-16 15:17:11 +08:00
Junyuan Feng
db3ec38a0f Change app name 2022-01-11 13:34:15 +08:00
Junyuan Feng
a58119ef54 Optimize load speed 2022-01-11 13:21:52 +08:00
Junyuan Feng
340a7641e6 Solve ssh connect slow 2022-01-11 12:19:17 +08:00
Junyuan Feng
4d227c3f00 Fill macOS data 2022-01-10 17:04:18 +08:00
Junyuan Feng
195e188d0c Fix issue caused by flutter_staggered_animations 2022-01-10 16:00:11 +08:00
Junyuan Feng
692f3bcdbc Isolate SSHKeyPair process to avoid run stuck 2022-01-10 12:10:56 +08:00
Junyuan Feng
516cec5565 change default macos window size 2022-01-09 23:11:51 +08:00
Junyuan Feng
5a706313f5 use 9/16 to fit layout 2022-01-09 22:22:31 +08:00
Junyuan Feng
937f2fb38f fix server tab circle chart size 2022-01-09 21:14:47 +08:00
Junyuan Feng
7e36c06542 Solve launches too slow 2022-01-09 19:21:42 +08:00
Junyuan Feng
317936c521 Change url 2022-01-09 18:18:06 +08:00
Junyuan Feng
a2ed889183 migrate to darssh2 2022-01-09 18:06:39 +08:00
Junyuan Feng
3fc43d06e9 Add padding for bottom little white tile 2022-01-03 15:03:38 +08:00
Junyuan Feng
b922428c40 Fix mem progress display percent. 2022-01-02 19:26:00 +08:00
Junyuan Feng
e08f37fedc Improve.
- make the refresh interval setting makes effect immediately.
- auto stop/restart status update when app goto background/resume
2022-01-02 19:06:26 +08:00
362 changed files with 22003 additions and 3066 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,683 @@
import 'l10n.dart';
/// The translations for German (`de`).
class SDe extends S {
SDe([String locale = 'de']) : super(locale);
@override
String get about => 'Über';
@override
String get aboutThanks => 'Vielen Dank an die folgenden Personen, die daran teilgenommen haben.\n';
@override
String get add => 'Neu';
@override
String get addAServer => 'Server hinzufügen';
@override
String get addPrivateKey => 'Private key hinzufügen';
@override
String get added2List => 'Zur Aufgabenliste hinzugefügt';
@override
String get all => 'Alle';
@override
String get alreadyLastDir => 'Bereits im letzten Verzeichnis.';
@override
String get alterUrl => 'Url ändern';
@override
String get attention => 'Achtung';
@override
String get auto => 'System folgen';
@override
String get autoUpdateHomeWidget => 'Home-Widget automatisch aktualisieren';
@override
String get backup => 'Backup';
@override
String get backupAndRestore => 'Backup und Wiederherstellung';
@override
String get backupTip => 'Das Backup wird nur einfach verschlüsselt.\nBitte bewahre die Datei sicher auf.';
@override
String get backupVersionNotMatch => 'Die Backup-Version stimmt nicht überein.';
@override
String get bgRun => 'Hintergrundaktualisierung';
@override
String get canPullRefresh => 'Danach: herunterziehen zum Aktualisieren';
@override
String get cancel => 'Abbrechen';
@override
String get choose => 'Auswählen';
@override
String get chooseFontFile => 'Schriftart auswählen';
@override
String get choosePrivateKey => 'Private key auswählen';
@override
String get clear => 'Entfernen';
@override
String get close => 'Schließen';
@override
String get cmd => 'Command';
@override
String get conn => 'Verbindung';
@override
String get containerName => 'Container Name';
@override
String get containerStatus => 'Container Status';
@override
String get convert => 'Konvertieren';
@override
String get copy => 'Kopieren';
@override
String get copyPath => 'Pfad kopieren';
@override
String get createFile => 'Datei erstellen';
@override
String get createFolder => 'Ordner erstellen';
@override
String get dark => 'Dunkel';
@override
String get debug => 'Debug';
@override
String get decode => 'Decode';
@override
String get delete => 'Löschen';
@override
String get deleteServers => 'Batch-Löschung von Servern';
@override
String get disabled => 'Behinderte';
@override
String get disconnected => 'Disconnected';
@override
String get diskIgnorePath => 'Pfad für Datenträger ignorieren';
@override
String dl2Local(Object fileName) {
return 'Datei \"$fileName\" herunterladen?';
}
@override
String get dockerEditHost => 'DOCKER_HOST bearbeiten';
@override
String get dockerEmptyRunningItems => 'Keine aktiven Container.\n\nWomöglich wird die Umgebungsvariable DOCKER_HOST nicht richtig erkannt. Du kannst sie finden, indem du `echo \$DOCKER_HOST` im Terminal ausführst.';
@override
String dockerImagesFmt(Object count) {
return '$count Image(s)';
}
@override
String get dockerNotInstalled => 'Docker ist nicht installiert';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount aktiv, $stoppedCount container gestoppt.';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count Container aktiv';
}
@override
String get download => 'Download';
@override
String downloadStatus(Object percent, Object size) {
return '$percent% von $size';
}
@override
String get edit => 'Bearbeiten';
@override
String get editVirtKeys => 'Virtuelle Tasten bearbeiten';
@override
String get editor => 'Editor';
@override
String get encode => 'Encode';
@override
String get error => 'Fehler';
@override
String get exampleName => 'Servername';
@override
String get experimentalFeature => 'Experimentelles Feature';
@override
String get export => 'Export';
@override
String get extraArgs => 'Extra args';
@override
String get failed => 'Failed';
@override
String get feedback => 'Feedback';
@override
String get feedbackOnGithub => 'Wenn du Fragen hast, stelle diese bitte auf Github.';
@override
String get fieldMustNotEmpty => 'Die Eingabefelder dürfen nicht leer sein.';
@override
String fileNotExist(Object file) {
return '$file existiert nicht';
}
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'Datei \'$file\' ist zu groß $size, max $sizeMax';
}
@override
String get files => 'Dateien';
@override
String get finished => 'fertiggestellt';
@override
String get font => 'Schriftarten';
@override
String get fontSize => 'Schriftgröße';
@override
String foundNUpdate(Object count) {
return 'Update $count gefunden';
}
@override
String get fullScreen => 'Vollbildmodus';
@override
String get fullScreenJitter => 'Jitter im Vollbildmodus';
@override
String get fullScreenJitterHelp => 'Einbrennen des Bildschirms verhindern';
@override
String get getPushTokenFailed => 'Push-Token kann nicht abgerufen werden';
@override
String get gettingToken => 'Getting token...';
@override
String get goto => 'Pfad öffnen';
@override
String get homeWidgetUrlConfig => 'Home-Widget-Link konfigurieren';
@override
String get host => 'Host';
@override
String httpFailedWithCode(Object code) {
return 'Anfrage fehlgeschlagen, Statuscode: $code';
}
@override
String get image => 'Image';
@override
String get imagesList => 'Images';
@override
String get import => 'Importieren';
@override
String get inner => 'Eingebaut';
@override
String get inputDomainHere => 'Domain eingeben';
@override
String get install => 'install';
@override
String get installDockerWithUrl => 'Bitte installiere docker zuerst. https://docs.docker.com/engine/install';
@override
String get invalidJson => 'Ungültige JSON';
@override
String get invalidVersion => 'Ungültige Version';
@override
String invalidVersionHelp(Object url) {
return 'Bitte stelle sicher, dass Docker korrekt installiert ist oder dass du eine nicht selbstkompilierte Version verwendest. Wenn du die oben genannten Probleme nicht hast, melde bitte einen Fehler auf $url.';
}
@override
String get isBusy => 'Is busy now';
@override
String get keepForeground => 'Stelle sicher, dass die App geöffnet bleibt.';
@override
String get keyAuth => 'Schlüsselauthentifzierung';
@override
String get keyboardCompatibility => 'Mögliche Verbesserungen bei der Kompatibilität der Eingabemethoden';
@override
String get keyboardType => 'Tastatur Typ';
@override
String get language => 'Sprache';
@override
String get languageName => 'Deutsch';
@override
String get lastTry => 'Letzter Versuch';
@override
String get launchPage => 'Startseite';
@override
String get license => 'Lizenzen';
@override
String get light => 'Hell';
@override
String get loadingFiles => 'Lädt Dateien...';
@override
String get log => 'Log';
@override
String get loss => 'loss';
@override
String madeWithLove(Object myGithub) {
return 'Erstellt mit ❤️ von $myGithub';
}
@override
String get max => 'max';
@override
String get maxRetryCount => 'Anzahl an Verbindungsversuchen';
@override
String get maxRetryCountEqual0 => 'Unbegrenzte Verbindungsversuche zum Server';
@override
String get min => 'min';
@override
String get mission => 'Mission';
@override
String get ms => 'ms';
@override
String get name => 'Name';
@override
String get needRestart => 'App muss neugestartet werden';
@override
String get netViewType => 'Netzwerkansicht Typ';
@override
String get newContainer => 'Neuer Container';
@override
String get noClient => 'Kein Client';
@override
String get noInterface => 'Kein Interface';
@override
String get noOptions => 'Keine Optionen verfügbar';
@override
String get noResult => 'Kein Ergebnis';
@override
String get noSavedPrivateKey => 'Keine gespeicherten Private Keys';
@override
String get noSavedSnippet => 'Keine gespeicherten Snippets.';
@override
String get noServerAvailable => 'Kein Server verfügbar.';
@override
String get noUpdateAvailable => 'Kein Update verfügbar';
@override
String get notSelected => 'Nicht ausgewählt';
@override
String get nullToken => 'Null token';
@override
String get ok => 'OK';
@override
String get onServerDetailPage => 'in Detailansicht des Servers';
@override
String get open => 'Öffnen';
@override
String get paste => 'Einfügen';
@override
String get path => 'Pfad';
@override
String get pickFile => 'Datei wählen';
@override
String get pingAvg => 'Avg:';
@override
String get pingInputIP => 'Bitte gib eine Ziel-IP/Domain ein.';
@override
String get pingNoServer => 'Kein Server zum Anpingen.\nBitte füge einen Server hinzu.';
@override
String get pkg => 'Pkg';
@override
String get platformNotSupportUpdate => 'Die aktuelle Plattform unterstützt keine In-App-Updates.\nBitte kompiliere vom Quellcode und installiere sie.';
@override
String get plzEnterHost => 'Bitte Host eingeben.';
@override
String get plzSelectKey => 'Wähle einen Key.';
@override
String get port => 'Port';
@override
String get preview => 'Vorschau';
@override
String get primaryColor => 'Farbschema';
@override
String get privateKey => 'Private Key';
@override
String get process => 'Prozess';
@override
String get pushToken => 'Push Token';
@override
String get pwd => 'Passwort';
@override
String get remotePath => 'Entfernte Pfade';
@override
String get rename => 'Umbenennen';
@override
String reportBugsOnGithubIssue(Object url) {
return 'Bitte Bugs auf $url melden';
}
@override
String get restart => 'Neustart';
@override
String get restore => 'Wiederherstellen';
@override
String get restoreSuccess => 'Wiederherstellung erfolgreich. App neustarten um Änderungen anzuwenden.';
@override
String restoreSureWithDate(Object date) {
return 'Bist du sicher, dass du das Backup vom $date wiederherstellen möchtest?';
}
@override
String get result => 'Result';
@override
String get rotateAngel => 'Rotationswinkel';
@override
String get run => 'Ausführen';
@override
String get save => 'Speichern';
@override
String get saved => 'Gerettet';
@override
String get second => 's';
@override
String get server => 'Server';
@override
String get serverTabConnecting => 'Verbinden...';
@override
String get serverTabEmpty => 'Keine Server vorhanden.';
@override
String get serverTabFailed => 'Fehlgeschlagen';
@override
String get serverTabLoading => 'Lädt...';
@override
String get serverTabPlzSave => 'Bitte \'speichere\' diesen privaten Schlüssel erneut.';
@override
String get serverTabUnkown => 'Unbekannter Status';
@override
String get setting => 'Einstellungen';
@override
String get sftpDlPrepare => 'Verbindung vorbereiten...';
@override
String get sftpNoDownloadTask => 'Keine aktiven Downloads.';
@override
String get sftpSSHConnected => 'SFTP Verbunden';
@override
String get showDistLogo => 'Distributionslogo anzeigen';
@override
String get snippet => 'Snippet';
@override
String get speed => 'Tempo';
@override
String spentTime(Object time) {
return 'Benötigte Zeit: $time';
}
@override
String sshTip(Object url) {
return 'Diese Funktion befindet sich jetzt in der Experimentierphase.\n\nBitte melde Bugs auf $url oder mach mit bei der Entwicklung.';
}
@override
String get sshVirtualKeyAutoOff => 'Automatische Umschaltung der virtuellen Tasten';
@override
String get start => 'Start';
@override
String get stop => 'Stop';
@override
String get success => 'Erfolgreich';
@override
String sureDelete(Object name) {
return 'Soll [$name] wirklich gelöscht werden?';
}
@override
String get sureDirEmpty => 'Stelle sicher, dass der Ordner leer ist.';
@override
String get sureNoPwd => 'Bist du sicher, dass du kein Passwort verwenden willst?';
@override
String sureToDeleteServer(Object server) {
return 'Bist du sicher, dass du [$server] löschen willst?';
}
@override
String get system => 'Systeme';
@override
String get tag => 'Tags';
@override
String get terminal => 'Terminal';
@override
String get theme => 'Themen';
@override
String get themeMode => 'Themen-Modus';
@override
String get times => 'x';
@override
String get traffic => 'Durchflussmenge';
@override
String get ttl => 'ttl';
@override
String get unknown => 'Unbekannt';
@override
String get unknownError => 'Unbekannter Fehler';
@override
String get unkownConvertMode => 'Unbekannter Konvertierungsmodus';
@override
String get update => 'Update';
@override
String get updateAll => 'Alle aktualisieren';
@override
String get updateIntervalEqual0 => 'Wenn du den Wert 0 einstellst, wird nicht automatisch aktualisiert.\nDer CPU-Status kann nicht berechnet werden.';
@override
String get updateServerStatusInterval => 'Aktualisierungsintervall des Serverstatus';
@override
String updateTip(Object newest) {
return 'Update: v1.0.$newest';
}
@override
String updateTipTooLow(Object newest) {
return 'Aktuelle Version ist zu alt, bitte update auf v1.0.$newest';
}
@override
String get upload => 'Hochladen';
@override
String get upsideDown => 'Upside Down';
@override
String get urlOrJson => 'URL oder JSON';
@override
String get user => 'Benutzer';
@override
String versionHaveUpdate(Object build) {
return 'Gefunden: v1.0.$build, klicke zum Aktualisieren';
}
@override
String versionUnknownUpdate(Object build) {
return 'Aktuell: v1.0.$build';
}
@override
String versionUpdated(Object build) {
return 'v1.0.$build ist bereits die neueste Version';
}
@override
String get viewErr => 'Fehler anzeigen';
@override
String get virtKeyHelpClipboard => 'In die Zwischenablage kopieren, wenn das ausgewählte Terminal nicht leer ist, andernfalls den Inhalt der Zwischenablage in das Terminal einfügen.';
@override
String get virtKeyHelpSFTP => 'Aktuelles Verzeichnis in SFTP öffnen.';
@override
String get waitConnection => 'Bitte warte, bis die Verbindung hergestellt wurde.';
@override
String get whenOpenApp => 'Beim Öffnen der App';
@override
String get willTakEeffectImmediately => 'Wird sofort angewendet';
}

View File

@@ -0,0 +1,683 @@
import 'l10n.dart';
/// The translations for English (`en`).
class SEn extends S {
SEn([String locale = 'en']) : super(locale);
@override
String get about => 'About';
@override
String get aboutThanks => 'Thanks to the following people who participated in.';
@override
String get add => 'Add';
@override
String get addAServer => 'add a server';
@override
String get addPrivateKey => 'Add private key';
@override
String get added2List => 'Added to task list';
@override
String get all => 'All';
@override
String get alreadyLastDir => 'Already in last directory.';
@override
String get alterUrl => 'Alter url';
@override
String get attention => 'Attention';
@override
String get auto => 'Auto';
@override
String get autoUpdateHomeWidget => 'Auto update home widget';
@override
String get backup => 'Backup';
@override
String get backupAndRestore => 'Backup and Restore';
@override
String get backupTip => 'The exported data is simply encrypted. \nPlease keep it safe.';
@override
String get backupVersionNotMatch => 'Backup version is not match.';
@override
String get bgRun => 'Run in backgroud';
@override
String get canPullRefresh => 'You can pull to refresh.';
@override
String get cancel => 'Cancel';
@override
String get choose => 'Choose';
@override
String get chooseFontFile => 'Choose a font file';
@override
String get choosePrivateKey => 'Choose private key';
@override
String get clear => 'Clear';
@override
String get close => 'Close';
@override
String get cmd => 'Command';
@override
String get conn => 'Connection';
@override
String get containerName => 'Container name';
@override
String get containerStatus => 'Container status';
@override
String get convert => 'Convert';
@override
String get copy => 'Copy';
@override
String get copyPath => 'Copy path';
@override
String get createFile => 'Create file';
@override
String get createFolder => 'Create folder';
@override
String get dark => 'Dark';
@override
String get debug => 'Debug';
@override
String get decode => 'Decode';
@override
String get delete => 'Delete';
@override
String get deleteServers => 'Batch delete servers';
@override
String get disabled => 'Disabled';
@override
String get disconnected => 'Disconnected';
@override
String get diskIgnorePath => 'Ignore path for disk';
@override
String dl2Local(Object fileName) {
return 'Download $fileName to local?';
}
@override
String get dockerEditHost => 'Edit DOCKER_HOST';
@override
String get dockerEmptyRunningItems => 'No running container. \nIt may be that the env DOCKER_HOST is not read correctly. You can found it by running `echo \$DOCKER_HOST` in terminal.';
@override
String dockerImagesFmt(Object count) {
return '$count images';
}
@override
String get dockerNotInstalled => 'Docker not installed';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount running, $stoppedCount container stopped.';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count container running.';
}
@override
String get download => 'Download';
@override
String downloadStatus(Object percent, Object size) {
return '$percent% of $size';
}
@override
String get edit => 'Edit';
@override
String get editVirtKeys => 'Edit virtual keys';
@override
String get editor => 'Editor';
@override
String get encode => 'Encode';
@override
String get error => 'Error';
@override
String get exampleName => 'Example name';
@override
String get experimentalFeature => 'Experimental feature';
@override
String get export => 'Export';
@override
String get extraArgs => 'Extra args';
@override
String get failed => 'Failed';
@override
String get feedback => 'Feedback';
@override
String get feedbackOnGithub => 'If you have any questions, please feedback on Github.';
@override
String get fieldMustNotEmpty => 'These fields must not be empty.';
@override
String fileNotExist(Object file) {
return '$file not exist';
}
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'File \'$file\' too large $size, max $sizeMax';
}
@override
String get files => 'Files';
@override
String get finished => 'Finished';
@override
String get font => 'Font';
@override
String get fontSize => 'Font size';
@override
String foundNUpdate(Object count) {
return 'Found $count update';
}
@override
String get fullScreen => 'Full screen mode';
@override
String get fullScreenJitter => 'Full screen jitter';
@override
String get fullScreenJitterHelp => 'To avoid screen burn-in';
@override
String get getPushTokenFailed => 'Can\'t fetch push token';
@override
String get gettingToken => 'Getting token...';
@override
String get goto => 'Go to';
@override
String get homeWidgetUrlConfig => 'Config home widget url';
@override
String get host => 'Host';
@override
String httpFailedWithCode(Object code) {
return 'request failed, status code: $code';
}
@override
String get image => 'Image';
@override
String get imagesList => 'Images list';
@override
String get import => 'Import';
@override
String get inner => 'Inner';
@override
String get inputDomainHere => 'Input Domain here';
@override
String get install => 'install';
@override
String get installDockerWithUrl => 'Please https://docs.docker.com/engine/install docker first.';
@override
String get invalidJson => 'Invalid JSON';
@override
String get invalidVersion => 'Invalid version';
@override
String invalidVersionHelp(Object url) {
return 'Please make sure that docker is installed correctly, or that you are using a non-self-compiled version. If you don\'t have the above issues, please submit an issue on $url.';
}
@override
String get isBusy => 'Is busy now';
@override
String get keepForeground => 'Keep app foreground!';
@override
String get keyAuth => 'Key Auth';
@override
String get keyboardCompatibility => 'Possible to improve input method compatibility';
@override
String get keyboardType => 'Keyborad type';
@override
String get language => 'Language';
@override
String get languageName => 'English';
@override
String get lastTry => 'Last try';
@override
String get launchPage => 'Launch page';
@override
String get license => 'License';
@override
String get light => 'Light';
@override
String get loadingFiles => 'Loading files...';
@override
String get log => 'Log';
@override
String get loss => 'loss';
@override
String madeWithLove(Object myGithub) {
return 'Made with ❤️ by $myGithub';
}
@override
String get max => 'max';
@override
String get maxRetryCount => 'Number of server reconnection';
@override
String get maxRetryCountEqual0 => 'Will retry again and again.';
@override
String get min => 'min';
@override
String get mission => 'Mission';
@override
String get ms => 'ms';
@override
String get name => 'Name';
@override
String get needRestart => 'Need to restart app';
@override
String get netViewType => 'Net view type';
@override
String get newContainer => 'New container';
@override
String get noClient => 'No client';
@override
String get noInterface => 'No interface';
@override
String get noOptions => 'No options';
@override
String get noResult => 'No result';
@override
String get noSavedPrivateKey => 'No saved private keys.';
@override
String get noSavedSnippet => 'No saved snippets.';
@override
String get noServerAvailable => 'No server available.';
@override
String get noUpdateAvailable => 'No update available';
@override
String get notSelected => 'Not selected';
@override
String get nullToken => 'Null token';
@override
String get ok => 'OK';
@override
String get onServerDetailPage => 'On server detail page';
@override
String get open => 'Open';
@override
String get paste => 'Paste';
@override
String get path => 'Path';
@override
String get pickFile => 'Pick file';
@override
String get pingAvg => 'Avg:';
@override
String get pingInputIP => 'Please input a target IP / domain.';
@override
String get pingNoServer => 'No server to ping.\nPlease add a server in server tab.';
@override
String get pkg => 'Pkg';
@override
String get platformNotSupportUpdate => 'Current platform does not support in app update.\nPlease build from source and install it.';
@override
String get plzEnterHost => 'Please enter host.';
@override
String get plzSelectKey => 'Please select a key.';
@override
String get port => 'Port';
@override
String get preview => 'Preview';
@override
String get primaryColor => 'Primary color';
@override
String get privateKey => 'Private Key';
@override
String get process => 'Process';
@override
String get pushToken => 'Push token';
@override
String get pwd => 'Password';
@override
String get remotePath => 'Remote path';
@override
String get rename => 'Rename';
@override
String reportBugsOnGithubIssue(Object url) {
return 'Please report bugs on $url';
}
@override
String get restart => 'Restart';
@override
String get restore => 'Restore';
@override
String get restoreSuccess => 'Restore success. Restart app to apply.';
@override
String restoreSureWithDate(Object date) {
return 'Are you sure to restore from $date ?';
}
@override
String get result => 'Result';
@override
String get rotateAngel => 'Rotation angle';
@override
String get run => 'Run';
@override
String get save => 'Save';
@override
String get saved => 'Saved';
@override
String get second => 's';
@override
String get server => 'Server';
@override
String get serverTabConnecting => 'Connecting...';
@override
String get serverTabEmpty => 'There is no server.\nClick the fab to add one.';
@override
String get serverTabFailed => 'Failed';
@override
String get serverTabLoading => 'Loading...';
@override
String get serverTabPlzSave => 'Please \'save\' this private key again.';
@override
String get serverTabUnkown => 'Unknown state';
@override
String get setting => 'Settings';
@override
String get sftpDlPrepare => 'Preparing to connect...';
@override
String get sftpNoDownloadTask => 'No download task.';
@override
String get sftpSSHConnected => 'SFTP Connected';
@override
String get showDistLogo => 'Show distribution logo';
@override
String get snippet => 'Snippet';
@override
String get speed => 'Speed';
@override
String spentTime(Object time) {
return 'Spent time: $time';
}
@override
String sshTip(Object url) {
return 'This function is now in the experimental stage.\n\nPlease report bugs on $url or join our development.';
}
@override
String get sshVirtualKeyAutoOff => 'Auto switching of virtual keys';
@override
String get start => 'Start';
@override
String get stop => 'Stop';
@override
String get success => 'Success';
@override
String sureDelete(Object name) {
return 'Are you sure to delete [$name]?';
}
@override
String get sureDirEmpty => 'Make sure dir is empty.';
@override
String get sureNoPwd => 'Are you sure to use no password?';
@override
String sureToDeleteServer(Object server) {
return 'Are you sure to delete server [$server]?';
}
@override
String get system => 'System';
@override
String get tag => 'Tags';
@override
String get terminal => 'Terminal';
@override
String get theme => 'Theme';
@override
String get themeMode => 'Theme mode';
@override
String get times => 'Times';
@override
String get traffic => 'Traffic';
@override
String get ttl => 'ttl';
@override
String get unknown => 'Unknown';
@override
String get unknownError => 'Unknown error';
@override
String get unkownConvertMode => 'Unknown convert mode';
@override
String get update => 'Update';
@override
String get updateAll => 'Update all';
@override
String get updateIntervalEqual0 => 'You set to 0, will not update automatically.\nCan\'t calculate CPU status.';
@override
String get updateServerStatusInterval => 'Server status update interval';
@override
String updateTip(Object newest) {
return 'Update: v1.0.$newest';
}
@override
String updateTipTooLow(Object newest) {
return 'Current version is too low, please update to v1.0.$newest';
}
@override
String get upload => 'Upload';
@override
String get upsideDown => 'Upside Down';
@override
String get urlOrJson => 'URL or JSON';
@override
String get user => 'User';
@override
String versionHaveUpdate(Object build) {
return 'Found: v1.0.$build, click to update';
}
@override
String versionUnknownUpdate(Object build) {
return 'Current: v1.0.$build';
}
@override
String versionUpdated(Object build) {
return 'Current: v1.0.$build, is up to date';
}
@override
String get viewErr => 'See error';
@override
String get virtKeyHelpClipboard => 'Copy to the clipboard if terminal selected is not empty, otherwise paste the contents of the clipboard to the terminal.';
@override
String get virtKeyHelpSFTP => 'Open current directory in SFTP.';
@override
String get waitConnection => 'Please wait for the connection to be established.';
@override
String get whenOpenApp => 'When opening the app';
@override
String get willTakEeffectImmediately => 'Will take effect immediately';
}

View File

@@ -0,0 +1,683 @@
import 'l10n.dart';
/// The translations for Indonesian (`id`).
class SId extends S {
SId([String locale = 'id']) : super(locale);
@override
String get about => 'Tentang';
@override
String get aboutThanks => 'Terima kasih kepada orang -orang berikut yang berpartisipasi.';
@override
String get add => 'Menambahkan';
@override
String get addAServer => 'tambahkan server';
@override
String get addPrivateKey => 'Tambahkan kunci pribadi';
@override
String get added2List => 'Ditambahkan ke Daftar Tugas';
@override
String get all => 'Semua';
@override
String get alreadyLastDir => 'Sudah di direktori terakhir.';
@override
String get alterUrl => 'Alter url';
@override
String get attention => 'Perhatian';
@override
String get auto => 'Auto';
@override
String get autoUpdateHomeWidget => 'Widget Rumah Pembaruan Otomatis';
@override
String get backup => 'Cadangan';
@override
String get backupAndRestore => 'Cadangan dan Pulihkan';
@override
String get backupTip => 'Data yang diekspor hanya dienkripsi.\nTolong jaga keamanannya.';
@override
String get backupVersionNotMatch => 'Versi cadangan tidak cocok.';
@override
String get bgRun => 'Jalankan di Backgroud';
@override
String get canPullRefresh => 'Anda dapat menarik untuk menyegarkan.';
@override
String get cancel => 'Membatalkan';
@override
String get choose => 'Memilih';
@override
String get chooseFontFile => 'Pilih file font';
@override
String get choosePrivateKey => 'Pilih Kunci Pribadi';
@override
String get clear => 'Jernih';
@override
String get close => 'Menutup';
@override
String get cmd => 'Memerintah';
@override
String get conn => 'Koneksi';
@override
String get containerName => 'Nama kontainer';
@override
String get containerStatus => 'Status wadah';
@override
String get convert => 'Mengubah';
@override
String get copy => 'Menyalin';
@override
String get copyPath => 'Path Copy';
@override
String get createFile => 'Buat file';
@override
String get createFolder => 'Membuat folder';
@override
String get dark => 'Gelap';
@override
String get debug => 'Debug';
@override
String get decode => 'Membaca sandi';
@override
String get delete => 'Menghapus';
@override
String get deleteServers => 'Penghapusan server secara batch';
@override
String get disabled => 'Dengan disabilitas';
@override
String get disconnected => 'Terputus';
@override
String get diskIgnorePath => 'Abaikan jalan untuk disk';
@override
String dl2Local(Object fileName) {
return 'Unduh $fileName ke lokal?';
}
@override
String get dockerEditHost => 'Edit Docker_host';
@override
String get dockerEmptyRunningItems => 'Tidak ada wadah yang berjalan.\nMungkin saja env DOCKER_HOST tidak dibaca dengan benar. Anda dapat menemukannya dengan menjalankan `echo \$DOCKER_HOST` di terminal.';
@override
String dockerImagesFmt(Object count) {
return '$count gambar';
}
@override
String get dockerNotInstalled => 'Docker tidak terpasang';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount running, $stoppedCount container stopped.';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count wadah berjalan.';
}
@override
String get download => 'Unduh';
@override
String downloadStatus(Object percent, Object size) {
return '$percent% dari $size';
}
@override
String get edit => 'Edit';
@override
String get editVirtKeys => 'Edit kunci virtual';
@override
String get editor => 'Editor';
@override
String get encode => 'Menyandi';
@override
String get error => 'Kesalahan';
@override
String get exampleName => 'Nama contoh';
@override
String get experimentalFeature => 'Fitur eksperimental';
@override
String get export => 'Ekspor';
@override
String get extraArgs => 'Args ekstra';
@override
String get failed => 'Gagal';
@override
String get feedback => 'Masukan';
@override
String get feedbackOnGithub => 'Jika Anda memiliki pertanyaan, silakan umpan balik tentang GitHub.';
@override
String get fieldMustNotEmpty => 'Bidang -bidang ini tidak boleh kosong.';
@override
String fileNotExist(Object file) {
return '$file tidak ada';
}
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'File \'$file\' terlalu besar $size, max $sizeMax';
}
@override
String get files => 'File';
@override
String get finished => 'Selesai';
@override
String get font => 'Font';
@override
String get fontSize => 'Ukuran huruf';
@override
String foundNUpdate(Object count) {
return 'Menemukan $count pembaruan';
}
@override
String get fullScreen => 'Mode Layar Penuh';
@override
String get fullScreenJitter => 'Jitter layar penuh';
@override
String get fullScreenJitterHelp => 'Untuk menghindari pembakaran layar';
@override
String get getPushTokenFailed => 'Tidak bisa mengambil token dorong';
@override
String get gettingToken => 'Mendapatkan token ...';
@override
String get goto => 'Pergi ke';
@override
String get homeWidgetUrlConfig => 'Konfigurasi URL Widget Rumah';
@override
String get host => 'Host';
@override
String httpFailedWithCode(Object code) {
return 'Permintaan gagal, kode status: $code';
}
@override
String get image => 'Gambar';
@override
String get imagesList => 'Daftar gambar';
@override
String get import => 'Impor';
@override
String get inner => 'Batin';
@override
String get inputDomainHere => 'Input domain di sini';
@override
String get install => 'Install';
@override
String get installDockerWithUrl => 'Silakan https://docs.docker.com/engine/install Docker pertama.';
@override
String get invalidJson => 'JSON tidak valid';
@override
String get invalidVersion => 'Versi tidak valid';
@override
String invalidVersionHelp(Object url) {
return 'Pastikan Docker diinstal dengan benar, atau Anda menggunakan versi yang tidak dikompilasi. Jika Anda tidak memiliki masalah di atas, silakan kirimkan masalah pada $url.';
}
@override
String get isBusy => 'Sibuk sekarang';
@override
String get keepForeground => 'Simpan Aplikasi Foreground!';
@override
String get keyAuth => 'Auth kunci';
@override
String get keyboardCompatibility => 'Mungkin untuk meningkatkan kompatibilitas metode input';
@override
String get keyboardType => 'Tipe Keyborad';
@override
String get language => 'Bahasa';
@override
String get languageName => 'Indonesia';
@override
String get lastTry => 'Percobaan terakhir';
@override
String get launchPage => 'Halaman peluncuran';
@override
String get license => 'Lisensi';
@override
String get light => 'Terang';
@override
String get loadingFiles => 'Memuat file ...';
@override
String get log => 'Catatan';
@override
String get loss => 'kehilangan';
@override
String madeWithLove(Object myGithub) {
return 'Dibuat dengan ❤️ oleh $myGithub';
}
@override
String get max => 'Max';
@override
String get maxRetryCount => 'Jumlah penyambungan kembali server';
@override
String get maxRetryCountEqual0 => 'Akan mencoba lagi lagi dan lagi.';
@override
String get min => 'Min';
@override
String get mission => 'Misi';
@override
String get ms => 'MS';
@override
String get name => 'Nama';
@override
String get needRestart => 'Perlu memulai ulang aplikasi';
@override
String get netViewType => 'Jenis tampilan bersih';
@override
String get newContainer => 'Wadah baru';
@override
String get noClient => 'Tidak ada klien';
@override
String get noInterface => 'Tidak ada antarmuka';
@override
String get noOptions => 'Tidak ada opsi';
@override
String get noResult => 'Tidak ada hasil';
@override
String get noSavedPrivateKey => 'Tidak ada kunci pribadi yang disimpan.';
@override
String get noSavedSnippet => 'Tidak ada cuplikan yang disimpan.';
@override
String get noServerAvailable => 'Tidak ada server yang tersedia.';
@override
String get noUpdateAvailable => 'Tidak ada pembaruan yang tersedia';
@override
String get notSelected => 'Tidak terpilih';
@override
String get nullToken => 'Token NULL';
@override
String get ok => 'OKE';
@override
String get onServerDetailPage => 'Di halaman detail server';
@override
String get open => 'Membuka';
@override
String get paste => 'Tempel';
@override
String get path => 'Jalur';
@override
String get pickFile => 'Pilih file';
@override
String get pingAvg => 'Rata -rata:';
@override
String get pingInputIP => 'Harap masukkan IP / domain target.';
@override
String get pingNoServer => 'Tidak ada server untuk melakukan ping.\nHarap tambahkan server di tab Server.';
@override
String get pkg => 'Pkg';
@override
String get platformNotSupportUpdate => 'Platform saat ini tidak mendukung pembaruan aplikasi.\nSilakan bangun dari sumber dan instal.';
@override
String get plzEnterHost => 'Harap masukkan host.';
@override
String get plzSelectKey => 'Pilih kunci.';
@override
String get port => 'Port';
@override
String get preview => 'Pratinjau';
@override
String get primaryColor => 'Warna utama';
@override
String get privateKey => 'Kunci Pribadi';
@override
String get process => 'Proses';
@override
String get pushToken => 'Dorong token';
@override
String get pwd => 'Kata sandi';
@override
String get remotePath => 'Jalur jarak jauh';
@override
String get rename => 'Ganti nama';
@override
String reportBugsOnGithubIssue(Object url) {
return 'Harap laporkan bug di $url';
}
@override
String get restart => 'Mengulang kembali';
@override
String get restore => 'Memulihkan';
@override
String get restoreSuccess => 'Kembalikan kesuksesan. Mulai ulang aplikasi untuk diterapkan.';
@override
String restoreSureWithDate(Object date) {
return 'Apakah Anda pasti akan memulihkan dari $date?';
}
@override
String get result => 'Hasil';
@override
String get rotateAngel => 'Sudut rotasi';
@override
String get run => 'Berlari';
@override
String get save => 'Menyimpan';
@override
String get saved => 'Diselamatkan';
@override
String get second => 'S';
@override
String get server => 'Server';
@override
String get serverTabConnecting => 'Menghubungkan ...';
@override
String get serverTabEmpty => 'Tidak ada server.\nKlik fab untuk menambahkan satu.';
@override
String get serverTabFailed => 'Gagal';
@override
String get serverTabLoading => 'Memuat...';
@override
String get serverTabPlzSave => 'Harap \'simpan\' kunci pribadi ini lagi.';
@override
String get serverTabUnkown => 'Negara yang tidak diketahui';
@override
String get setting => 'Pengaturan';
@override
String get sftpDlPrepare => 'Bersiap untuk terhubung ...';
@override
String get sftpNoDownloadTask => 'Tidak ada tugas unduhan.';
@override
String get sftpSSHConnected => 'Sftp terhubung';
@override
String get showDistLogo => 'Tampilkan logo distribusi';
@override
String get snippet => 'Snippet';
@override
String get speed => 'Kecepatan';
@override
String spentTime(Object time) {
return 'Menghabiskan waktu: $time';
}
@override
String sshTip(Object url) {
return 'Fungsi ini sekarang dalam tahap eksperimen.\n\nHarap laporkan bug di $url atau bergabunglah dengan pengembangan kami.';
}
@override
String get sshVirtualKeyAutoOff => 'Switching Otomatis Kunci Virtual';
@override
String get start => 'Awal';
@override
String get stop => 'Berhenti';
@override
String get success => 'Kesuksesan';
@override
String sureDelete(Object name) {
return 'Apakah Anda pasti akan menghapus [$name]?';
}
@override
String get sureDirEmpty => 'Pastikan dir kosong.';
@override
String get sureNoPwd => 'Apakah Anda pasti tidak menggunakan kata sandi?';
@override
String sureToDeleteServer(Object server) {
return 'Apakah Anda pasti akan menghapus server [$server]?';
}
@override
String get system => 'Sistem';
@override
String get tag => 'Tag';
@override
String get terminal => 'Terminal';
@override
String get theme => ' Tema';
@override
String get themeMode => 'Mode tema';
@override
String get times => 'Waktu';
@override
String get traffic => 'Lalu lintas';
@override
String get ttl => 'ttl';
@override
String get unknown => 'Tidak dikenal';
@override
String get unknownError => 'Kesalahan yang tidak diketahui';
@override
String get unkownConvertMode => 'Mode Konversi Tidak Diketahui';
@override
String get update => 'Memperbarui';
@override
String get updateAll => 'Perbarui semua';
@override
String get updateIntervalEqual0 => 'Anda mengatur ke 0, tidak akan memperbarui secara otomatis.\nTidak dapat menghitung status CPU.';
@override
String get updateServerStatusInterval => 'Interval Pembaruan Status Server';
@override
String updateTip(Object newest) {
return 'UPDATE: v1.0.$newest';
}
@override
String updateTipTooLow(Object newest) {
return 'Versi saat ini terlalu rendah, harap perbarui ke v1.0.$newest';
}
@override
String get upload => 'Mengunggah';
@override
String get upsideDown => 'Terbalik';
@override
String get urlOrJson => 'URL atau JSON';
@override
String get user => 'Username';
@override
String versionHaveUpdate(Object build) {
return 'Ditemukan: v1.0.$build, klik untuk memperbarui';
}
@override
String versionUnknownUpdate(Object build) {
return 'Saat ini: v1.0.$build';
}
@override
String versionUpdated(Object build) {
return 'Saat ini: v1.0.$build, mutakhir';
}
@override
String get viewErr => 'Lihat kesalahan';
@override
String get virtKeyHelpClipboard => 'Salin ke clipboard jika terminal yang dipilih tidak kosong, jika tidak, tempel isi clipboard ke terminal.';
@override
String get virtKeyHelpSFTP => 'Buka direktori saat ini di SFTP.';
@override
String get waitConnection => 'Harap tunggu koneksi akan dibuat.';
@override
String get whenOpenApp => 'Saat membuka aplikasi';
@override
String get willTakEeffectImmediately => 'Akan segera berlaku';
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
# Generated by the flutter tool
name: synthetic_package
description: The Flutter application's synthetic package.

53
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,53 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
<!--
Thanks for your feedback
1、Please check if there is a similar issue first
2、If it is a function or UI suggestion, please go to Discussion
-->
**Describe the bug**
<!--A clear and concise description of what the bug is.-->
**To Reproduce**
<!--
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
-->
**Desired Results**
<!--A clear description of the result you expected.-->
**Actual Results**
<!--A clear description of the actual result.-->
**Screenshots**
<!--If applicable, add screenshots(both bug screen and logs
screen) to help explain your problem.-->
**Device**
<!--
- OS: e.g. iOS16 or Android13
- App Version: e.g. 1.0.302
-->
**Additional context**
<!--Add any other context about the problem here.-->

51
.github/ISSUE_TEMPLATE/bug_report_cn.md vendored Normal file
View File

@@ -0,0 +1,51 @@
---
name: Bug 反馈
about: 帮助我们改进错误
title: ''
labels: ''
assignees: ''
---
<!--
感谢您反馈问题,请先阅读以下内容:
1、请先查看是否已存在相似 issue
2、如果是功能、UI建议请移步至 Discussion
-->
**描述BUG**
<!--一个关于BUG的清晰描述。-->
**复现步骤**
<!--
如何复现:
1. 打开 '...'
2. 点击 '....'
3. 滚动到 '....'
4. 看到错误
-->
**期望结果**
<!--一个关于你期望的结果的清晰描述。-->
**实际结果**
<!--一个关于实际结果的清晰描述。-->
**截图**
<!--如果可以,请添加截图(包括错误界面和日志界面)来帮助解释你的问题。-->
**设备**
<!--
- 系统: e.g. iOS16 or Android13
- App版本 e.g. 1.0.302
-->
**更多信息**
<!--在这里添加关于这个问题的更多信息。-->

20
.github/workflows/issue-translator.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
name: 'issue-translator'
on:
issue_comment:
types: [created]
issues:
types: [opened]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: usthe/issues-translate-action@v2.7
with:
# not require, default false.
# Decide whether to modify the issue title.
# if true, the robot account @Issues-translate-bot must have modification permissions, invite @Issues-translate-bot to your project or use your custom bot.
IS_MODIFY_TITLE: false
# not require.
# Customize the translation robot prefix message.
CUSTOM_BOT_NOTE: Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿

8
.gitignore vendored
View File

@@ -23,7 +23,7 @@
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
# .dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
@@ -47,3 +47,9 @@ app.*.map.json
/android/app/fjy.androidstudio.key
/release
test.dart
.fvm
# Keep generated l10n files
/.dart_tool/*
!/.dart_tool/flutter_gen

View File

@@ -1,10 +1,30 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
# This file should be version controlled.
version:
revision: 4cc385b4b84ac2f816d939a49ea1f328c4e0b48e
revision: 84a1e904f44f9b0e9c4510138010edcc653163f8
channel: stable
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8
base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8
- platform: macos
create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8
base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'

6
.vscode/launch.json vendored
View File

@@ -13,7 +13,11 @@
"name": "toolbox (profile mode)",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
"flutterMode": "profile",
"args": [
"--cache-sksl",
// "--purge-persistent-cache"
]
}
]
}

12
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,12 @@
{
"dart.flutterSdkPath": ".fvm",
"files.watcherExclude": {
"**/.fvm": true
},
"git.ignoredRepositories": [
".fvm"
],
"search.exclude": {
"**/.fvm": true
}
}

112
README.md
View File

@@ -1,58 +1,104 @@
# Server Monitor & Toolbox
English | [简体中文](README_zh.md)
<!-- Title-->
<p align="center">
<img src="imgs/flutter_server_box.png">
</p>
A new Flutter project which provide a chart view to display server status data.
<!-- Badges-->
<p align="center">
<a href="https://apps.apple.com/app/id1586449703">
<img style="height: 37px" src="imgs/appstore.svg">
</a>
<a href="https://count.ly/f/badge" rel="nofollow">
<img style="height: 37px" src="https://count.ly/badges/dark.svg">
</a>
<a href="https://github.com/lollipopkit/flutter_server_box/releases/latest">
<img style="height: 37px" src="imgs/dl-android.svg">
</a>
</p>
## ScreenShots
<p align="center">
A Flutter project which provide charts to display <a href="../../issues/43">Linux</a> server status and tools to manage server.
<br>
Especially thanks to <a href="https://github.com/TerminalStudio/dartssh2">dartssh2</a> & <a href="https://github.com/TerminalStudio/xterm.dart">xterm.dart</a>.
</p>
## 🔖 Feature
- [x] Functions
- [x] `SSH` Terminal, `SFTP`
- [x] `Docker & Pkg` Manager
- [x] `Status` charts
- [x] `Code editor`
- [x] `Ping` and etc.
- [x] Localization ( English, 简体中文, Deutsch, 繁體中文, Indonesian. [l10n guide](#l10n-guide) )
- [x] Desktop support
## 📩 Push
In order to push server status to your portable device without opening ServerBox app (Such as **message push** and **home widget**), you need to install [ServerBoxMonitor](https://github.com/lollipopkit/server_box_monitor) on your servers, and config it correctly. See [Wiki](https://github.com/lollipopkit/server_box_monitor/wiki) for more details.
## 🆘 Help
If you have any question or feature request, please open a [discussion](https://github.com/lollipopkit/flutter_server_box/discussions/new/choose).
If ServerBox app has any bug, please open an [issue](https://github.com/lollipopkit/flutter_server_box/issues/new).
## 📱 ScreenShots
<table>
<tr>
<td>
<img width="200px" src="https://raw.githubusercontent.com/LollipopKit/flutter_server_monitor_toolbox/main/screenshots/IMG_3327.PNG">
<img width="200px" src="imgs/server.jpeg">
</td>
<td>
<img width="200px" src="https://raw.githubusercontent.com/LollipopKit/flutter_server_monitor_toolbox/main/screenshots/IMG_3347.PNG">
<img width="200px" src="imgs/detail.jpg">
</td>
<td>
<img width="200px" src="https://raw.githubusercontent.com/LollipopKit/flutter_server_monitor_toolbox/main/screenshots/detail.jpg">
<img width="200px" src="imgs/ssh.jpg">
</td>
<td>
<img width="200px" src="imgs/editor.jpg">
</td>
</tr>
</table>
<table>
<tr>
<td>
<img width="200px" src="https://raw.githubusercontent.com/LollipopKit/flutter_server_monitor_toolbox/main/screenshots/IMG_3330.PNG">
<img width="200px" src="imgs/ping.png">
</td>
<td>
<img width="200px" src="https://raw.githubusercontent.com/LollipopKit/flutter_server_monitor_toolbox/main/screenshots/IMG_3331.PNG">
<img width="200px" src="imgs/sftp.jpeg">
</td>
<td>
<img width="200px" src="https://raw.githubusercontent.com/LollipopKit/flutter_server_monitor_toolbox/main/screenshots/IMG_3346.PNG">
<img width="200px" src="imgs/docker.jpeg">
</td>
<td>
<img width="200px" src="imgs/convert.png">
</td>
</tr>
</table>
## Milestone
- [x] SSH connect
- [x] Server info store
- [x] Status chart view
- [x] Base64/Url En/Decode
- [x] Private key store
- [x] Server status detail page
- [x] Theme switch
- [x] Execute snippet
- [ ] Migrate from `ssh2` to `dartssh2`
- [ ] Desktop support
## Build
Please use `make.dart` to build.
```shell
# build android apk
./make.dart build android
# due to pub package 'ssh2' incompatibility
# can't build ios ipa through './make.dart build ios'
# more info: [https://github.com/jda258/flutter_ssh2/issues/8]
# please run below cmd to run on ios device
./make.dart run release
```
## 🖥 Platform
Status|Platform
--- | ---
Full Support| Android / iOS / macOS
Support, but not tested| Windows / Linux
## License
`LGPL License. LollipopKit 2021`
## 🧱 Contribution
**Any positive contribution is welcome**.
10 iOS app redemption codes will be given away for the first time you participate in the contribution. This is the only thing I can do to thank you. :)
### l10n guide
1. Fork this repo and clone forked repo to your local machine.
2. Create `arb` file in `lib/l10n/` directory
- File name should be `intl_XX.arb`, where `XX` is the language code. Such as `intl_en.arb` for English and `intl_zh.arb` for Chinese.
3. Add content to the file. You can refer to `intl_en.arb` and `intl_zh.arb` for the format.
4. Run `flutter gen-l10n` to generate files.
5. Pull commit to your forked repo.
6. Request a pull request on my repo.
## 📝 License
1. You can package it for personal use, but you can't distribute it. (For example: You can teach others how to package it to avoid spending money to buy App, but you can't directly distribute the App you packaged.)
2. Except for the above, apply the `GPLv3` license.

104
README_zh.md Normal file
View File

@@ -0,0 +1,104 @@
简体中文 | [English](README.md)
<!-- Title-->
<p align="center">
<img src="imgs/flutter_server_box.png">
</p>
<!-- Badges-->
<p align="center">
<a href="https://apps.apple.com/app/id1586449703">
<img style="height: 37px" src="imgs/appstore.svg">
</a>
<a href="https://count.ly/f/badge" rel="nofollow">
<img style="height: 37px" src="https://count.ly/badges/dark.svg">
</a>
<a href="https://github.com/lollipopkit/flutter_server_box/releases/latest">
<img style="height: 37px" src="imgs/dl-android.svg">
</a>
</p>
<p align="center">
使用 Flutter 开发的 <a href="../../issues/43">Linux</a> 服务器工具箱,提供服务器状态图表和管理工具。
<br>
特别感谢 <a href="https://github.com/TerminalStudio/dartssh2">dartssh2</a> & <a href="https://github.com/TerminalStudio/xterm.dart">xterm.dart</a>.
</p>
## 🔖 特点
- [x] 功能
- [x] `SSH` 终端, `SFTP`
- [x] `Docker & 包` 管理器
- [x] 状态图表
- [x] 代码编辑器
- [x] `Ping` 和 更多
- [x] 本地化 ( English, 简体中文, Deutsch, 繁體中文, Indonesian。 [如何贡献?](#l10n))
- [x] 桌面端支持
## 📩 推送
为了可以在不使用 ServerBox app 时获取服务器状态(例如:桌面小部件、推送服务),你需要在你的服务器上安装 [ServerBoxMonitor](https://github.com/lollipopkit/server_box_monitor),并且正确配置,详情可见 [Wiki](https://github.com/lollipopkit/server_box_monitor/wiki/%E4%B8%BB%E9%A1%B5)。
## 🆘 帮助
如果你有任何问题或者功能请求,请在 [讨论](https://github.com/lollipopkit/flutter_server_box/discussions/new/choose) 中交流。
如果 ServerBox app 有任何 bug请在 [问题](https://github.com/lollipopkit/flutter_server_box/issues/new) 中反馈。
## 📱 截屏
<table>
<tr>
<td>
<img width="200px" src="imgs/server.jpeg">
</td>
<td>
<img width="200px" src="imgs/detail.jpg">
</td>
<td>
<img width="200px" src="imgs/ssh.jpg">
</td>
<td>
<img width="200px" src="imgs/editor.jpg">
</td>
</tr>
</table>
<table>
<tr>
<td>
<img width="200px" src="imgs/ping.png">
</td>
<td>
<img width="200px" src="imgs/sftp.jpeg">
</td>
<td>
<img width="200px" src="imgs/docker.jpeg">
</td>
<td>
<img width="200px" src="imgs/convert.png">
</td>
</tr>
</table>
## 🖥 平台
状态|平台
--- | ---
完整支持 | Android / iOS / macOS
可能支持,未测试 | Windows / Linux
## 🧱 贡献
**任何正面的贡献都欢迎**.
第一次参与贡献,会赠送 10 份 iOS App 兑换码。这是我唯一能送的。你可以同来送给其他人。:)
### l10n
1. Fork 本项目,并 Clone 你 Fork 的项目至你的电脑
2.`lib/l10n/` 文件夹内创建 `.arb` 本地化文件
- 文件名应该类似 `intl_XX.arb`, `XX` 是语言标识码。 例如 `intl_en.arb` 是给英语的, `intl_zh.arb` 是给中文的
3.`.arb` 本地化文件添加内容。 你可以查看 `intl_en.arb``intl_zh.arb` 的内容,并理解其含义,来创建新的本地化文件
4. 运行 `flutter gen-l10n` 来生成所需文件
5. Commit 变更到你的 Fork 的 Repo
6. 在我的项目中发起 Pull Request.
## 📝 License
1. 允许打包自用但不允许分发举例你可以教别人如何打包避免花钱购买App但不能与他人分享你打包的App
2. 除去上诉情形:遵循 `GPLv3`

View File

@@ -22,6 +22,8 @@ linter:
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
library_private_types_in_public_api: false
use_build_context_synchronously: false
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule

View File

@@ -32,7 +32,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 30
compileSdkVersion 33
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
@@ -48,7 +48,6 @@ android {
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "tech.lolli.toolbox"
minSdkVersion 21
targetSdkVersion 30
@@ -67,12 +66,18 @@ android {
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
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix '.debug'
}
profile {
applicationIdSuffix '.debug'
}
}
}

View File

@@ -36,5 +36,25 @@
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<receiver
android:name=".widget.HomeWidget"
android:exported="false"
android:label="StatusWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="tech.lolli.toolbox.UPDATE_WIDGET" />
<action android:name="miui.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<!--
<meta-data
android:name="miuiWidget"
android:value="true" />
-->
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/home_widget" />
</receiver>
</application>
</manifest>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -1,6 +1,23 @@
package tech.lolli.toolbox
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
class MainActivity: FlutterActivity() {
class MainActivity : FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
val binaryMessenger = flutterEngine.dartExecutor.binaryMessenger
MethodChannel(binaryMessenger, "tech.lolli.toolbox/app_retain").apply {
setMethodCallHandler { method, result ->
if (method.method == "sendToBackground") {
moveTaskToBack(true)
result.success(null)
} else {
result.notImplemented()
}
}
}
}
}

View File

@@ -0,0 +1,88 @@
package tech.lolli.toolbox.widget
import android.app.PendingIntent
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.content.Intent
import android.view.View
import android.widget.RemoteViews
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import org.json.JSONObject
import tech.lolli.toolbox.R
import java.net.URL
class HomeWidget : AppWidgetProvider() {
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
for (appWidgetId in appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId)
}
}
@OptIn(DelicateCoroutinesApi::class)
private fun updateAppWidget(context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int) {
val views = RemoteViews(context.packageName, R.layout.home_widget)
val sp = context.getSharedPreferences("FlutterSharedPreferences", Context.MODE_PRIVATE)
var url = sp.getString("$appWidgetId", null)
val gUrl = sp.getString("*", null)
if (url.isNullOrEmpty()) {
url = gUrl
}
val intentUpdate = Intent(context, HomeWidget::class.java)
intentUpdate.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
val ids = intArrayOf(appWidgetId)
intentUpdate.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
val pendingUpdate: PendingIntent = PendingIntent.getBroadcast(
context,
appWidgetId,
intentUpdate,
PendingIntent.FLAG_UPDATE_CURRENT)
views.setOnClickPendingIntent(R.id.widget_container, pendingUpdate)
if (url.isNullOrEmpty()) {
views.setViewVisibility(R.id.widget_cpu_label, View.INVISIBLE)
views.setViewVisibility(R.id.widget_mem_label, View.INVISIBLE)
views.setViewVisibility(R.id.widget_disk_label, View.INVISIBLE)
views.setViewVisibility(R.id.widget_net_label, View.INVISIBLE)
views.setTextViewText(R.id.widget_name, "ID: $appWidgetId")
appWidgetManager.updateAppWidget(appWidgetId, views)
return
}
GlobalScope.launch(Dispatchers.IO) {
val jsonStr = URL(url).readText()
val jsonObject = JSONObject(jsonStr)
val data = jsonObject.getJSONObject("data")
val server = data.getString("name")
val cpu = data.getString("cpu")
val mem = data.getString("mem")
val disk = data.getString("disk")
val net = data.getString("net")
GlobalScope.launch(Dispatchers.Main) {
// mem or disk is empty -> get status failed
// (cpu | net) isEmpty -> data is not ready
if (mem.isEmpty() || disk.isEmpty()) {
return@launch
}
views.setTextViewText(R.id.widget_name, server)
views.setTextViewText(R.id.widget_cpu, cpu)
views.setTextViewText(R.id.widget_mem, mem)
views.setTextViewText(R.id.widget_disk, disk)
views.setTextViewText(R.id.widget_net, net)
// eg: 17:17
val timeStr = android.text.format.DateFormat.format("HH:mm", java.util.Date()).toString()
views.setTextViewText(R.id.widget_time, timeStr)
appWidgetManager.updateAppWidget(appWidgetId, views)
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:gravity="fill" android:src="@drawable/background"/>
</item>
<item>
<bitmap android:gravity="center" android:src="@drawable/splash"/>
</item>
</layer-list>

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:gravity="fill" android:src="@drawable/background"/>
</item>
<item>
<bitmap android:gravity="center" android:src="@drawable/splash"/>
</item>
</layer-list>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

After

Width:  |  Height:  |  Size: 69 B

View File

@@ -6,4 +6,4 @@
<item>
<bitmap android:gravity="center" android:src="@drawable/splash"/>
</item>
</layer-list>
</layer-list>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

After

Width:  |  Height:  |  Size: 69 B

View File

@@ -6,4 +6,4 @@
<item>
<bitmap android:gravity="center" android:src="@drawable/splash"/>
</item>
</layer-list>
</layer-list>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="@color/widgetSummaryText"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M15,9L9,9v6h6L15,9zM13,13h-2v-2h2v2zM21,11L21,9h-2L19,7c0,-1.1 -0.9,-2 -2,-2h-2L15,3h-2v2h-2L11,3L9,3v2L7,5c-1.1,0 -2,0.9 -2,2v2L3,9v2h2v2L3,13v2h2v2c0,1.1 0.9,2 2,2h2v2h2v-2h2v2h2v-2h2c1.1,0 2,-0.9 2,-2v-2h2v-2h-2v-2h2zM17,17L7,17L7,7h10v10z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="@color/widgetSummaryText"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M7.77,6.76L6.23,5.48 0.82,12l5.41,6.52 1.54,-1.28L3.42,12l4.35,-5.24zM7,13h2v-2L7,11v2zM17,11h-2v2h2v-2zM11,13h2v-2h-2v2zM17.77,5.48l-1.54,1.28L20.58,12l-4.35,5.24 1.54,1.28L23.18,12l-5.41,-6.52z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="@color/widgetSummaryText"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="@color/widgetSummaryText"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M20.38,8.57l-1.23,1.85a8,8 0,0 1,-0.22 7.58L5.07,18A8,8 0,0 1,15.58 6.85l1.85,-1.23A10,10 0,0 0,3.35 19a2,2 0,0 0,1.72 1h13.85a2,2 0,0 0,1.74 -1,10 10,0 0,0 -0.27,-10.44zM10.59,15.41a2,2 0,0 0,2.83 0l5.66,-8.49 -8.49,5.66a2,2 0,0 0,0 2.83z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="@color/widgetSummaryText"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M2,20h20v-4L2,16v4zM4,17h2v2L4,19v-2zM2,4v4h20L22,4L2,4zM6,7L4,7L4,5h2v2zM2,14h20v-4L2,10v4zM4,11h2v2L4,13v-2z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="16dp"/>
<solid android:color="@color/widgetBackground" />
</shape>

View File

@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/widget_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/widget_background"
android:padding="17dp"
android:orientation="vertical" >
<TextView
android:id="@+id/widget_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/widgetText"
android:textSize="23sp"
android:textStyle="bold"
tools:text="Server Name" />
<RelativeLayout
android:id="@+id/widget_container_inner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingTop="13dp">
<LinearLayout
android:id="@+id/widget_cpu_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="2.7dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="17dp"
android:layout_height="17dp"
android:src="@drawable/speed_24">
</ImageView>
<TextView
android:id="@+id/widget_cpu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="11dp"
android:singleLine="true"
android:ellipsize = "marquee"
android:textColor="@color/widgetSummaryText"
android:textSize="12.7sp"
tools:text="CPU" />
</LinearLayout>
<LinearLayout
android:id="@+id/widget_mem_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="2.7dp"
android:layout_below="@id/widget_cpu_label"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="17dp"
android:layout_height="17dp"
android:src="@drawable/memory_24">
</ImageView>
<TextView
android:id="@+id/widget_mem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="11dp"
android:maxLines="1"
android:textColor="@color/widgetSummaryText"
android:textSize="12.7sp"
tools:text="Mem" />
</LinearLayout>
<LinearLayout
android:id="@+id/widget_disk_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="2.7dp"
android:layout_below="@id/widget_mem_label"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="17dp"
android:layout_height="17dp"
android:src="@drawable/storage_24">
</ImageView>
<TextView
android:id="@+id/widget_disk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="11dp"
android:maxLines="1"
android:textColor="@color/widgetSummaryText"
android:textSize="12.7sp"
tools:text="Disk" />
</LinearLayout>
<LinearLayout
android:id="@+id/widget_net_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/widget_disk_label"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="17dp"
android:layout_height="17dp"
android:src="@drawable/net_24">
</ImageView>
<TextView
android:id="@+id/widget_net"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="11dp"
android:maxLines="1"
android:textColor="@color/widgetSummaryText"
android:textSize="12.7sp"
tools:text="Net" />
</LinearLayout>
</RelativeLayout>
<TextView
android:id="@+id/widget_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:maxLines="2"
android:textColor="@color/widgetSummaryText"
android:textSize="11sp"
tools:text="UpdateTime" />
</RelativeLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="widgetBackground">#000000</color>
<color name="widgetText">#FFFFFF</color>
<color name="widgetSummaryText">#BBBBBB</color>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#372D2D</color>
</resources>

View File

@@ -5,7 +5,10 @@
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:windowFullscreen">true</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
@@ -16,4 +19,4 @@
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
</resources>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<color name="colorLaunch">#EEEEEE</color>
<color name="widgetBackground">#FFFFFF</color>
<color name="widgetText">#000000</color>
<color name="widgetSummaryText">#333333</color>
</resources>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#083963</color>
<color name="ic_launcher_background">#FFFFFF</color>
</resources>

View File

@@ -5,7 +5,10 @@
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:windowFullscreen">true</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
@@ -16,4 +19,4 @@
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
</resources>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:maxHeight="110dp"
android:maxWidth="110dp"
android:minHeight="110dp"
android:updatePeriodMillis="1800001"
android:initialLayout="@layout/home_widget"
android:resizeMode="none"
android:widgetCategory="home_screen">
</appwidget-provider>

View File

@@ -1,5 +1,5 @@
buildscript {
ext.kotlin_version = '1.3.50'
ext.kotlin_version = '1.8.0'
repositories {
google()
mavenCentral()
@@ -24,6 +24,6 @@ subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
tasks.register("clean", Delete) {
delete rootProject.buildDir
}

View File

@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

6
imgs/appstore.svg Normal file
View File

@@ -0,0 +1,6 @@
<svg width="360" height="120" viewBox="0 0 360 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 16C0 7.16344 7.16344 0 16 0H344C352.837 0 360 7.16344 360 16V104C360 112.837 352.837 120 344 120H16C7.16344 120 0 112.837 0 104V16Z" fill="black"/>
<path d="M1.50391 5.49902V21H6.71387C11.3223 21 14.0293 18.1318 14.0293 13.2441C14.0293 8.36719 11.3115 5.49902 6.71387 5.49902H1.50391ZM3.4375 7.23926H6.58496C10.1084 7.23926 12.0527 9.3877 12.0527 13.2656C12.0527 17.1113 10.0977 19.2598 6.58496 19.2598H3.4375V7.23926ZM20.7754 21.1934C23.8584 21.1934 25.9424 18.9697 25.9424 15.4141C25.9424 11.8477 23.8584 9.63477 20.7754 9.63477C17.6816 9.63477 15.5977 11.8477 15.5977 15.4141C15.5977 18.9697 17.6816 21.1934 20.7754 21.1934ZM20.7754 19.5498C18.7988 19.5498 17.499 18.0459 17.499 15.4141C17.499 12.7822 18.7988 11.2783 20.7754 11.2783C22.752 11.2783 24.041 12.7822 24.041 15.4141C24.041 18.0459 22.752 19.5498 20.7754 19.5498ZM42.0449 9.82812H40.1973L37.9629 18.916H37.9199L35.3848 9.82812H33.5801L31.0557 18.916H31.0127L28.7783 9.82812H26.9199L30.0459 21H31.9473L34.4609 12.3525H34.5039L37.0283 21H38.9297L42.0449 9.82812ZM43.5811 21H45.4502V14.4258C45.4502 12.5352 46.5996 11.2891 48.3613 11.2891C50.0801 11.2891 50.9287 12.2773 50.9287 14.082V21H52.7979V13.749C52.7979 11.2139 51.3799 9.63477 48.9307 9.63477C47.2012 9.63477 46.0088 10.4082 45.3857 11.6113H45.3428V9.82812H43.5811V21ZM55.2793 21H57.1484V5.49902H55.2793V21ZM64.3027 21.1934C67.3857 21.1934 69.4697 18.9697 69.4697 15.4141C69.4697 11.8477 67.3857 9.63477 64.3027 9.63477C61.209 9.63477 59.125 11.8477 59.125 15.4141C59.125 18.9697 61.209 21.1934 64.3027 21.1934ZM64.3027 19.5498C62.3262 19.5498 61.0264 18.0459 61.0264 15.4141C61.0264 12.7822 62.3262 11.2783 64.3027 11.2783C66.2793 11.2783 67.5684 12.7822 67.5684 15.4141C67.5684 18.0459 66.2793 19.5498 64.3027 19.5498ZM75.0449 19.6035C73.7021 19.6035 72.8105 18.9053 72.8105 17.8418C72.8105 16.7891 73.6699 16.123 75.1738 16.0264L78.1602 15.8438V16.7568C78.1602 18.3682 76.8066 19.6035 75.0449 19.6035ZM74.626 21.1934C76.1299 21.1934 77.5479 20.3555 78.2139 19.0771H78.2568V21H80.0293V13.2764C80.0293 11.0527 78.375 9.63477 75.7539 9.63477C73.1113 9.63477 71.457 11.1172 71.3281 13.0508H73.1328C73.3691 11.9551 74.2715 11.2783 75.7109 11.2783C77.2578 11.2783 78.1602 12.0947 78.1602 13.459V14.3936L74.959 14.5762C72.3809 14.7266 70.9092 15.9297 70.9092 17.8418C70.9092 19.8506 72.4023 21.1934 74.626 21.1934ZM86.6357 21.1934C88.2471 21.1934 89.5254 20.3984 90.2451 19.1094H90.2773V21H92.0605V5.49902H90.1914V11.6436H90.1484C89.4824 10.4189 88.1934 9.63477 86.5928 9.63477C83.7783 9.63477 81.8555 11.9121 81.8555 15.4141C81.8555 18.916 83.7891 21.1934 86.6357 21.1934ZM86.9902 11.2783C88.9131 11.2783 90.2021 12.9219 90.2021 15.4141C90.2021 17.917 88.9131 19.5498 86.9902 19.5498C85.0137 19.5498 83.7676 17.9492 83.7676 15.4141C83.7676 12.8896 85.0137 11.2783 86.9902 11.2783ZM103.727 21.1934C106.81 21.1934 108.894 18.9697 108.894 15.4141C108.894 11.8477 106.81 9.63477 103.727 9.63477C100.633 9.63477 98.5488 11.8477 98.5488 15.4141C98.5488 18.9697 100.633 21.1934 103.727 21.1934ZM103.727 19.5498C101.75 19.5498 100.45 18.0459 100.45 15.4141C100.45 12.7822 101.75 11.2783 103.727 11.2783C105.703 11.2783 106.992 12.7822 106.992 15.4141C106.992 18.0459 105.703 19.5498 103.727 19.5498ZM110.784 21H112.653V14.4258C112.653 12.5352 113.803 11.2891 115.564 11.2891C117.283 11.2891 118.132 12.2773 118.132 14.082V21H120.001V13.749C120.001 11.2139 118.583 9.63477 116.134 9.63477C114.404 9.63477 113.212 10.4082 112.589 11.6113H112.546V9.82812H110.784V21ZM127.499 7.13184V9.82812H125.834V11.3643H127.499V18.0996C127.499 20.248 128.294 21.0859 130.346 21.0859C130.786 21.0859 131.302 21.0537 131.527 21V19.4316C131.398 19.4531 130.969 19.4854 130.754 19.4854C129.798 19.4854 129.368 19.0234 129.368 18.0029V11.3643H131.538V9.82812H129.368V7.13184H127.499ZM133.633 21H135.502V14.4902C135.502 12.5566 136.651 11.2891 138.51 11.2891C140.261 11.2891 141.152 12.3525 141.152 14.125V21H143.021V13.7812C143.021 11.2891 141.539 9.63477 139.09 9.63477C137.393 9.63477 136.168 10.3652 135.545 11.6113H135.502V5.49902H133.633V21ZM149.875 11.2568C151.637 11.2568 152.808 12.5889 152.851 14.458H146.781C146.899 12.5996 148.124 11.2568 149.875 11.2568ZM152.808 17.7988C152.496 18.8516 151.454 19.5713 150.036 19.5713C148.027 19.5713 146.771 18.1641 146.771 16.0264V15.9189H154.784V15.21C154.784 11.8262 152.926 9.63477 149.907 9.63477C146.824 9.63477 144.848 11.9873 144.848 15.457C144.848 18.9697 146.792 21.1934 149.993 21.1934C152.432 21.1934 154.322 19.7539 154.645 17.7988H152.808Z" transform="translate(112 21)" fill="white"/>
<path d="M24.4694 44H29.7926L18.0905 11.5889H12.6549L0.952774 44H6.18617L9.15102 35.2402H21.5045L24.4694 44ZM15.2604 16.9795H15.3952L20.2243 31.1973H10.4313L15.2604 16.9795ZM46.0085 19.9893C42.5945 19.9893 39.8767 21.7188 38.4841 24.4365H38.3943V20.3711H33.6999V51.8164H38.5515V40.1143H38.6638C40.0114 42.7422 42.7068 44.4043 46.0984 44.4043C52.028 44.4043 55.9587 39.665 55.9587 32.1855C55.9587 24.7061 52.0056 19.9893 46.0085 19.9893ZM44.7282 40.2939C40.9997 40.2939 38.529 37.1045 38.529 32.1855C38.529 27.3115 41.0222 24.0771 44.7282 24.0771C48.5691 24.0771 50.9724 27.2441 50.9724 32.1855C50.9724 37.1494 48.5691 40.2939 44.7282 40.2939ZM72.9383 19.9893C69.5242 19.9893 66.8064 21.7188 65.4139 24.4365H65.324V20.3711H60.6297V51.8164H65.4813V40.1143H65.5936C66.9412 42.7422 69.6365 44.4043 73.0281 44.4043C78.9578 44.4043 82.8885 39.665 82.8885 32.1855C82.8885 24.7061 78.9354 19.9893 72.9383 19.9893ZM71.658 40.2939C67.9295 40.2939 65.4588 37.1045 65.4588 32.1855C65.4588 27.3115 67.952 24.0771 71.658 24.0771C75.4988 24.0771 77.9021 27.2441 77.9021 32.1855C77.9021 37.1494 75.4988 40.2939 71.658 40.2939ZM96.9697 34.9707C97.2841 40.833 102.136 44.5391 109.323 44.5391C117.005 44.5391 121.834 40.7432 121.834 34.6787C121.834 29.9395 119.071 27.2666 112.423 25.6943L108.852 24.8184C104.674 23.7852 102.967 22.4375 102.967 20.1465C102.967 17.2715 105.64 15.2949 109.548 15.2949C113.456 15.2949 116.129 17.249 116.421 20.4834H121.317C121.16 14.8906 116.466 11.0498 109.615 11.0498C102.697 11.0498 97.8232 14.8906 97.8232 20.4834C97.8232 24.998 100.586 27.7832 106.538 29.2207L110.738 30.2314C114.938 31.2646 116.713 32.7695 116.713 35.2852C116.713 38.1826 113.77 40.2939 109.683 40.2939C105.415 40.2939 102.293 38.1826 101.934 34.9707H96.9697ZM128.1 14.7783V20.3711H124.663V24.2119H128.1V37.7783C128.1 42.3379 129.964 44.1572 134.748 44.1572C135.826 44.1572 136.904 44.0674 137.443 43.9326V40.0918C137.129 40.1592 136.343 40.2041 135.849 40.2041C133.872 40.2041 132.974 39.2832 132.974 37.2393V24.2119H137.466V20.3711H132.974V14.7783H128.1ZM151.952 44.4492C158.713 44.4492 163.16 39.7998 163.16 32.1855C163.16 24.5938 158.691 19.9443 151.952 19.9443C145.214 19.9443 140.744 24.5938 140.744 32.1855C140.744 39.7998 145.192 44.4492 151.952 44.4492ZM151.952 40.4512C148.156 40.4512 145.686 37.4414 145.686 32.1855C145.686 26.9521 148.156 23.9424 151.952 23.9424C155.748 23.9424 158.219 26.9521 158.219 32.1855C158.219 37.4414 155.771 40.4512 151.952 40.4512ZM167.831 44H172.683V29.8496C172.683 26.5029 174.614 24.4141 177.737 24.4141C178.68 24.4141 179.533 24.5264 179.915 24.6836V20.1689C179.556 20.1016 178.949 19.9893 178.253 19.9893C175.468 19.9893 173.357 21.6289 172.571 24.3916H172.458V20.3711H167.831V44ZM192.695 23.8525C196.086 23.8525 198.377 26.3906 198.49 30.0068H186.675C186.922 26.4355 189.303 23.8525 192.695 23.8525ZM198.467 37.0596C197.816 39.126 195.772 40.5186 193.009 40.5186C189.123 40.5186 186.653 37.8008 186.653 33.6904V33.3984H203.341V31.7363C203.341 24.5713 199.253 19.9443 192.695 19.9443C186.024 19.9443 181.756 24.8857 181.756 32.2979C181.756 39.7549 185.956 44.4492 192.897 44.4492C198.31 44.4492 202.398 41.3721 203.072 37.0596H198.467Z" transform="translate(112 46)" fill="white"/>
<path d="M58.7425 55.4758C57.6652 57.9629 56.3901 60.2522 54.9128 62.357C52.899 65.2263 51.2502 67.2125 49.9795 68.3154C48.0097 70.1257 45.8992 71.0529 43.6392 71.1056C42.0167 71.1056 40.0601 70.6443 37.7825 69.7083C35.4974 68.7768 33.3975 68.3154 31.4774 68.3154C29.4636 68.3154 27.3038 68.7768 24.9937 69.7083C22.6801 70.6443 20.8162 71.132 19.3912 71.1803C17.2239 71.2726 15.0638 70.3191 12.9075 68.3154C11.5313 67.1158 9.80991 65.0594 7.74776 62.1461C5.53525 59.0351 3.71625 55.4275 2.29122 51.3146C0.765059 46.8722 0 42.5704 0 38.4057C0 33.635 1.03151 29.5204 3.09761 26.0723C4.72138 23.3027 6.88158 21.118 9.58523 19.5142C12.2889 17.9103 15.2102 17.093 18.3561 17.0407C20.0775 17.0407 22.3349 17.5729 25.1401 18.6186C27.9374 19.668 29.7335 20.2001 30.521 20.2001C31.1098 20.2001 33.1051 19.5779 36.4876 18.3374C39.6864 17.187 42.386 16.7107 44.5977 16.8984C50.5906 17.3817 55.0931 19.7427 58.0873 23.9961C52.7275 27.2416 50.0762 31.7873 50.129 37.6187C50.1773 42.1609 51.8262 45.9407 55.0667 48.9418C56.5352 50.3348 58.1753 51.4113 60 52.1759C59.6043 53.3227 59.1866 54.4213 58.7425 55.4758ZM44.9978 1.42413C44.9978 4.98426 43.6963 8.30835 41.1022 11.3851C37.9716 15.0427 34.185 17.1563 30.0787 16.8228C30.0264 16.3957 29.996 15.9462 29.996 15.4738C29.996 12.0561 31.4848 8.39843 34.1287 5.40781C35.4486 3.8936 37.1274 2.63457 39.1631 1.63021C41.1945 0.640834 43.1159 0.093682 44.923 0C44.9758 0.475924 44.9978 0.951892 44.9978 1.42408V1.42413Z" transform="translate(26 23)" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
imgs/apt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

BIN
imgs/convert.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

BIN
imgs/detail.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

1
imgs/dl-android.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
imgs/docker.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

BIN
imgs/editor.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 KiB

BIN
imgs/flutter_server_box.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
imgs/ping.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

BIN
imgs/server.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

BIN
imgs/sftp.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

BIN
imgs/ssh.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

View File

@@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>9.0</string>
<string>11.0</string>
</dict>
</plist>

View File

@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
# platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
@@ -27,6 +27,10 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe
flutter_ios_podfile_setup
# Used for flutter lib "file_picker"
Pod::PICKER_MEDIA = false
Pod::PICKER_AUDIO = false
target 'Runner' do
use_frameworks!
use_modular_headers!

View File

@@ -1,53 +1,72 @@
PODS:
- countly_flutter (20.11.4):
- countly_flutter (23.6.0):
- Flutter
- file_picker (0.0.1):
- Flutter
- Flutter (1.0.0)
- GZ-NMSSH (4.1.5)
- path_provider (0.0.1):
- flutter_native_splash (0.0.1):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- plain_notification_token (0.0.1):
- Flutter
- r_upgrade (0.0.1):
- Flutter
- ssh2 (2.2.3):
- share_plus (0.0.1):
- Flutter
- GZ-NMSSH (~> 4.1.5)
- url_launcher (0.0.1):
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- countly_flutter (from `.symlinks/plugins/countly_flutter/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
- path_provider (from `.symlinks/plugins/path_provider/ios`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- plain_notification_token (from `.symlinks/plugins/plain_notification_token/ios`)
- r_upgrade (from `.symlinks/plugins/r_upgrade/ios`)
- ssh2 (from `.symlinks/plugins/ssh2/ios`)
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
SPEC REPOS:
trunk:
- GZ-NMSSH
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
EXTERNAL SOURCES:
countly_flutter:
:path: ".symlinks/plugins/countly_flutter/ios"
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
Flutter:
:path: Flutter
path_provider:
:path: ".symlinks/plugins/path_provider/ios"
flutter_native_splash:
:path: ".symlinks/plugins/flutter_native_splash/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
plain_notification_token:
:path: ".symlinks/plugins/plain_notification_token/ios"
r_upgrade:
:path: ".symlinks/plugins/r_upgrade/ios"
ssh2:
:path: ".symlinks/plugins/ssh2/ios"
url_launcher:
:path: ".symlinks/plugins/url_launcher/ios"
share_plus:
:path: ".symlinks/plugins/share_plus/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
countly_flutter: 38419412e193a1faa5babeb5d28a63fda260687d
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
GZ-NMSSH: d749f8ae2fd0094b953cd1d5abd8e0cab3c93f8d
path_provider: d1e9807085df1f9cc9318206cd649dc0b76be3de
countly_flutter: 4eeee607183664b871589250a0bd049cfd2697eb
file_picker: 1d63c4949e05e386da864365f8c13e1e64787675
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8
plain_notification_token: b36467dc91939a7b6754267c701bbaca14996ee1
r_upgrade: 44d715c61914cce3d01ea225abffe894fd51c114
ssh2: 74165efc99417a075ecafd52caf93edadfb5eb60
url_launcher: b6e016d912f04be9f5bf6e8e82dc599b7ba59649
share_plus: 599aa54e4ea31d4b4c0e9c911bcc26c55e791028
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
PODFILE CHECKSUM: 7fb15c416f8685fca4966867a8da218ec592ec2e
COCOAPODS: 1.11.2
COCOAPODS: 1.12.1

View File

@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
@@ -13,9 +13,26 @@
9234EA956D1225D388A01660 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C1EB3935F9285537B0516 /* Pods_Runner.framework */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
E33A3E372A626DCD009744AB /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E33A3E362A626DCD009744AB /* WidgetKit.framework */; };
E33A3E392A626DCD009744AB /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E33A3E382A626DCD009744AB /* SwiftUI.framework */; };
E33A3E3C2A626DCE009744AB /* StatusWidgetBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E33A3E3B2A626DCE009744AB /* StatusWidgetBundle.swift */; };
E33A3E402A626DCE009744AB /* StatusWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = E33A3E3F2A626DCE009744AB /* StatusWidget.swift */; };
E33A3E452A626DD0009744AB /* StatusWidget.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = E33A3E412A626DCE009744AB /* StatusWidget.intentdefinition */; };
E33A3E462A626DD0009744AB /* StatusWidget.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = E33A3E412A626DCE009744AB /* StatusWidget.intentdefinition */; };
E33A3E492A626DD0009744AB /* StatusWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = E33A3E352A626DCD009744AB /* StatusWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
E3DB67ED2A31FE200027B8CB /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E3DB67EB2A31FE200027B8CB /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
E33A3E472A626DD0009744AB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 97C146E61CF9000F007C117D /* Project object */;
proxyType = 1;
remoteGlobalIDString = E33A3E342A626DCD009744AB;
remoteInfo = StatusWidgetExtension;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
@@ -27,6 +44,17 @@
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
E33A3E4A2A626DD0009744AB /* Embed Foundation Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
E33A3E492A626DD0009744AB /* StatusWidgetExtension.appex in Embed Foundation Extensions */,
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
@@ -43,10 +71,18 @@
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9C5314B89F1F73A1900CCAFD /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
A775F241DEE026555178AC01 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
E33A3E352A626DCD009744AB /* StatusWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = StatusWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
E33A3E362A626DCD009744AB /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
E33A3E382A626DCD009744AB /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
E33A3E3B2A626DCE009744AB /* StatusWidgetBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusWidgetBundle.swift; sourceTree = "<group>"; };
E33A3E3F2A626DCE009744AB /* StatusWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusWidget.swift; sourceTree = "<group>"; };
E33A3E412A626DCE009744AB /* StatusWidget.intentdefinition */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; path = StatusWidget.intentdefinition; sourceTree = "<group>"; };
E33A3E442A626DD0009744AB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
E398BF6A29BDB34500FE4FD5 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
E3DB67EC2A31FE200027B8CB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -58,6 +94,15 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
E33A3E322A626DCD009744AB /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
E33A3E392A626DCD009744AB /* SwiftUI.framework in Frameworks */,
E33A3E372A626DCD009744AB /* WidgetKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -87,6 +132,7 @@
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
E33A3E3A2A626DCE009744AB /* StatusWidget */,
97C146EF1CF9000F007C117D /* Products */,
65C40392B90925608A0465EE /* Pods */,
D242A20E381A343934B6A7B6 /* Frameworks */,
@@ -97,6 +143,7 @@
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
E33A3E352A626DCD009744AB /* StatusWidgetExtension.appex */,
);
name = Products;
sourceTree = "<group>";
@@ -104,9 +151,10 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
E398BF6A29BDB34500FE4FD5 /* Runner.entitlements */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
E3DB67EB2A31FE200027B8CB /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
@@ -120,10 +168,23 @@
isa = PBXGroup;
children = (
278C1EB3935F9285537B0516 /* Pods_Runner.framework */,
E33A3E362A626DCD009744AB /* WidgetKit.framework */,
E33A3E382A626DCD009744AB /* SwiftUI.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
E33A3E3A2A626DCE009744AB /* StatusWidget */ = {
isa = PBXGroup;
children = (
E33A3E3B2A626DCE009744AB /* StatusWidgetBundle.swift */,
E33A3E3F2A626DCE009744AB /* StatusWidget.swift */,
E33A3E412A626DCE009744AB /* StatusWidget.intentdefinition */,
E33A3E442A626DD0009744AB /* Info.plist */,
);
path = StatusWidget;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -139,29 +200,52 @@
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
AA0A1FF2F3246F84EB0D91F2 /* [CP] Embed Pods Frameworks */,
E33A3E4A2A626DD0009744AB /* Embed Foundation Extensions */,
);
buildRules = (
);
dependencies = (
E33A3E482A626DD0009744AB /* PBXTargetDependency */,
);
name = Runner;
productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
E33A3E342A626DCD009744AB /* StatusWidgetExtension */ = {
isa = PBXNativeTarget;
buildConfigurationList = E33A3E4E2A626DD0009744AB /* Build configuration list for PBXNativeTarget "StatusWidgetExtension" */;
buildPhases = (
E33A3E312A626DCD009744AB /* Sources */,
E33A3E322A626DCD009744AB /* Frameworks */,
E33A3E332A626DCD009744AB /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = StatusWidgetExtension;
productName = StatusWidgetExtension;
productReference = E33A3E352A626DCD009744AB /* StatusWidgetExtension.appex */;
productType = "com.apple.product-type.app-extension";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
LastSwiftUpdateCheck = 1430;
LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
};
E33A3E342A626DCD009744AB = {
CreatedOnToolsVersion = 14.3;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
@@ -178,6 +262,7 @@
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
E33A3E342A626DCD009744AB /* StatusWidgetExtension */,
);
};
/* End PBXProject section */
@@ -187,22 +272,31 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
E3DB67ED2A31FE200027B8CB /* LaunchScreen.storyboard in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
E33A3E332A626DCD009744AB /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
@@ -213,6 +307,7 @@
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -273,11 +368,30 @@
files = (
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
E33A3E462A626DD0009744AB /* StatusWidget.intentdefinition in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
E33A3E312A626DCD009744AB /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
E33A3E402A626DCE009744AB /* StatusWidget.swift in Sources */,
E33A3E452A626DD0009744AB /* StatusWidget.intentdefinition in Sources */,
E33A3E3C2A626DCE009744AB /* StatusWidgetBundle.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
E33A3E482A626DD0009744AB /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = E33A3E342A626DCD009744AB /* StatusWidgetExtension */;
targetProxy = E33A3E472A626DD0009744AB /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
@@ -287,10 +401,10 @@
name = Main.storyboard;
sourceTree = "<group>";
};
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
E3DB67EB2A31FE200027B8CB /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C147001CF9000F007C117D /* Base */,
E3DB67EC2A31FE200027B8CB /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
@@ -339,7 +453,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -352,17 +466,20 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 406;
DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.toolbox;
MARKETING_VERSION = 1.0.406;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -417,7 +534,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -466,7 +583,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -481,17 +598,20 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 406;
DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.toolbox;
MARKETING_VERSION = 1.0.406;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -504,17 +624,20 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 406;
DEVELOPMENT_TEAM = BA88US33G6;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.toolbox;
MARKETING_VERSION = 1.0.406;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -522,6 +645,117 @@
};
name = Release;
};
E33A3E4B2A626DD0009744AB /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 406;
DEVELOPMENT_TEAM = BA88US33G6;
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = StatusWidget/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = StatusWidget;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0.406;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
E33A3E4C2A626DD0009744AB /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 406;
DEVELOPMENT_TEAM = BA88US33G6;
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = StatusWidget/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = StatusWidget;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0.406;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
E33A3E4D2A626DD0009744AB /* Profile */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 406;
DEVELOPMENT_TEAM = BA88US33G6;
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = StatusWidget/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = StatusWidget;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0.406;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Profile;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -545,6 +779,16 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
E33A3E4E2A626DD0009744AB /* Build configuration list for PBXNativeTarget "StatusWidgetExtension" */ = {
isa = XCConfigurationList;
buildConfigurations = (
E33A3E4B2A626DD0009744AB /* Debug */,
E33A3E4C2A626DD0009744AB /* Release */,
E33A3E4D2A626DD0009744AB /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
LastUpgradeVersion = "1300"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View File

@@ -1,4 +1,5 @@
import UIKit
import WidgetKit
import Flutter
@UIApplicationMain
@@ -8,6 +9,17 @@ import Flutter
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let methodChannel = FlutterMethodChannel(name: "tech.lolli.toolbox/home_widget", binaryMessenger: controller.binaryMessenger)
methodChannel.setMethodCallHandler({
(call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
if call.method == "update" {
if #available(iOS 14.0, *) {
WidgetCenter.shared.reloadTimelines(ofKind: "StatusWidget")
}
}
})
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Some files were not shown because too many files have changed in this diff Show More