同步ios的功能

This commit is contained in:
jyuesong
2022-05-30 14:14:49 +08:00
parent bd77beb60a
commit 665a51f962
15 changed files with 126 additions and 51 deletions

View File

@@ -44,3 +44,20 @@ iOS端暂无上架打算用户自行下载main分支源码编译安装
### 不支持的功能
>* 应用设置
>* 通知设置
版本更新通知 https://t.me/qinglongapp
用于生成app的图标
flutter pub run flutter_launcher_icons:main
生成原生的启动页面
flutter pub run flutter_native_splash:create
修改app名称
flutter pub run flutter_app_name
生成json.jc.dart文件
flutter pub run build_runner build --delete-conflicting-outputs

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 18 KiB

BIN
assets/images/ql_splash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -86,7 +86,7 @@ class _EnvPageState extends State<EnvPage> {
},
model: envProvider,
onReady: (viewModel) {
viewModel.loadData(context);
viewModel.loadData();
},
);
}

View File

@@ -125,17 +125,11 @@ class _LoginPageState extends ConsumerState<LoginPage> {
}
WidgetsBinding.instance?.endOfFrame;
},
child: ColorFiltered(
colorFilter: ColorFilter.mode(
ref.watch(themeProvider).primaryColor,
BlendMode.srcIn,
),
child: Image.asset(
"assets/images/ql.png",
height: 45,
),
),
),
],
),
SizedBox(

View File

@@ -6,20 +6,30 @@ class TaskLogBean {
String? name;
bool? isDir;
List<String>? files;
List<Children>? children;
TaskLogBean({this.name, this.isDir, this.files});
TaskLogBean({this.name, this.files});
TaskLogBean.fromJson(Map<String, dynamic> json) {
name = json['name'];
isDir = json['isDir'];
files = json['files'].cast<String>();
name = json['name'] ?? json['title'];
isDir = json['isDir'] ?? (json['type'] == "directory");
files = json['files']?.cast<String>();
if (json['children'] != null) {
children = <Children>[];
json['children'].forEach((v) {
children!.add(Children.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['isDir'] = this.isDir;
data['files'] = this.files;
if (this.children != null) {
data['children'] = this.children!.map((v) => v.toJson()).toList();
}
return data;
}
@@ -27,3 +37,31 @@ class TaskLogBean {
return TaskLogBean.fromJson(json);
}
}
class Children {
String? title;
String? value;
String? type;
String? key;
String? parent;
Children({this.title, this.value, this.type, this.key, this.parent});
Children.fromJson(Map<String, dynamic> json) {
title = json['title'];
value = json['value'];
type = json['type'];
key = json['key'];
parent = json['parent'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['title'] = this.title;
data['value'] = this.value;
data['type'] = this.type;
data['key'] = this.key;
data['parent'] = this.parent;
return data;
}
}

View File

@@ -50,10 +50,14 @@ class _TaskLogPageState extends ConsumerState<TaskLogPage> with LazyLoadState<Ta
fontSize: 16,
),
),
children: item.files!
children: (item.files?.isNotEmpty ?? false)
? item.files!
.map((e) => ListTile(
onTap: () {
Navigator.of(context).pushNamed(Routes.routeTaskLogDetail, arguments: item.name! + "/" + e);
Navigator.of(context).pushNamed(Routes.routeTaskLogDetail, arguments: {
"path": item.name,
"title": e,
});
},
title: Text(
e,
@@ -62,11 +66,33 @@ class _TaskLogPageState extends ConsumerState<TaskLogPage> with LazyLoadState<Ta
fontSize: 14,
),
),
))
.toList()
: (item.children ?? [])
.map((e) => ListTile(
onTap: () {
Navigator.of(context).pushNamed(Routes.routeTaskLogDetail, arguments: {
"path": item.name,
"title": e.title,
});
},
title: Text(
e.title ?? "",
style: TextStyle(
color: ref.watch(themeProvider).themeColor.titleColor(),
fontSize: 14,
),
),
))
.toList(),
)
: ListTile(
onTap: () {
if (item.isDir ?? false) {
"该文件夹为空".toast();
return;
}
Navigator.of(context).pushNamed(Routes.routeTaskLogDetail, arguments: item.name);
},
title: Text(

View File

@@ -41,7 +41,7 @@ class _TaskPageState extends ConsumerState<TaskPage> {
},
model: taskProvider,
onReady: (viewModel) {
viewModel.loadData(context);
viewModel.loadData();
},
);
}

View File

@@ -63,7 +63,7 @@ flutter:
assets:
- assets/images/
flutter_app_name:
name: "青龙"
name: "青龙客户端"
flutter_icons:
image_path_android: "assets/images/ql.png"