Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite4afaa2

Browse files
committed
app versions
1 parentdf2a7c7 commite4afaa2

File tree

3 files changed

+224
-83
lines changed

3 files changed

+224
-83
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
classVersion {
2+
finalString version;
3+
finalString releaseDate;
4+
finalString releaseNotes;
5+
finalbool forceUpdate;
6+
finalString fileId;
7+
finalint id;
8+
9+
Version({
10+
requiredthis.version,
11+
requiredthis.releaseDate,
12+
requiredthis.releaseNotes,
13+
requiredthis.forceUpdate,
14+
requiredthis.fileId,
15+
requiredthis.id,
16+
});
17+
18+
factoryVersion.fromJson(Map<String,dynamic> json) {
19+
returnVersion(
20+
version: json['version']??'',
21+
releaseDate: json['releaseDate']??'',
22+
releaseNotes: json['releaseNotes']??'',
23+
forceUpdate: json['forceUpdate']??false,
24+
fileId: json['fileId'],
25+
id: json['id'],
26+
);
27+
}
28+
29+
Map<String,dynamic>toJson() {
30+
return {
31+
'version': version,
32+
'releaseDate': releaseDate,
33+
'releaseNotes': releaseNotes,
34+
'forceUpdate': forceUpdate,
35+
'fileId': fileId,
36+
'id': id,
37+
};
38+
}
39+
40+
@override
41+
StringtoString() {
42+
return'Version{version: $version, releaseDate: $releaseDate, releaseNotes: $releaseNotes, forceUpdate: $forceUpdate, fileId: $fileId, id: $id}';
43+
}
44+
45+
@override
46+
booloperator==(Object other)=>
47+
identical(this, other)||
48+
otherisVersion&&
49+
runtimeType== other.runtimeType&&
50+
version== other.version&&
51+
releaseDate== other.releaseDate&&
52+
releaseNotes== other.releaseNotes&&
53+
forceUpdate== other.forceUpdate&&
54+
fileId== other.fileId&&
55+
id== other.id;
56+
57+
@override
58+
intget hashCode=>
59+
version.hashCode^
60+
releaseDate.hashCode^
61+
releaseNotes.hashCode^
62+
forceUpdate.hashCode^
63+
fileId.hashCode^
64+
id.hashCode;
65+
}

‎study-ai/myappflutter/lib/presentation/pages/app_version_page.dart‎

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'package:get/get.dart';
33
import'package:myappflutter/core/config/app_routes.dart';
44
import'package:myappflutter/core/utils/log_util.dart';
55
import'package:myappflutter/data/api/http_client.dart';
6+
import'package:myappflutter/data/models/version_model.dart';
67
import'../widgets/base_page.dart';
78

89
classAppVersionPageextendsStatefulWidget {
@@ -14,7 +15,7 @@ class AppVersionPage extends StatefulWidget {
1415

1516
class_AppVersionPageStateextendsState<AppVersionPage> {
1617
finalHttpClient _httpClient=HttpClient();
17-
List<dynamic> _versions= [];
18+
List<Version> _versions= [];
1819
bool _isLoading=false;
1920
bool _hasMore=true;
2021
int _currentPage=0;
@@ -42,28 +43,35 @@ class _AppVersionPageState extends State<AppVersionPage> {
4243
final response=await _httpClient.get('/app/versions');
4344

4445
if (response['code']==200&& response['data']!=null) {
45-
finaldata= response['data'];
46-
finalList<dynamic> newVersions=data['versions']?? [];
46+
finalList<dynamic> versionData= response['data']['versions']?? [];
47+
finalList<Version> newVersions=versionData.map<Version>((item)=>Version.fromJson(item)).toList();
4748

4849
setState(() {
4950
_versions.addAll(newVersions);
5051
_currentPage++;
5152
_hasMore= newVersions.length== _pageSize;
5253
});
5354
}else {
54-
Get.snackbar('error'.tr,'fetch_version_failed'.tr+': ${response['message'] ??'unknown_error'.tr}');
55+
Get.snackbar(
56+
'error'.tr,
57+
'fetch_version_failed'.tr+
58+
': ${response['message'] ??'unknown_error'.tr}',
59+
);
5560
}
5661
}catch (e) {
5762
LogUtil.error('获取版本列表异常: $e');
58-
Get.snackbar('error'.tr,'fetch_version_failed'.tr+', '+'retry_later'.tr);
63+
Get.snackbar(
64+
'error'.tr,
65+
'fetch_version_failed'.tr+', '+'retry_later'.tr,
66+
);
5967
}finally {
6068
setState(() {
6169
_isLoading=false;
6270
});
6371
}
6472
}
6573

66-
Widget_buildVersionCard(Map<String,dynamic> version) {
74+
Widget_buildVersionCard(Version version) {
6775
returnCard(
6876
margin:constEdgeInsets.symmetric(vertical:8, horizontal:16),
6977
child:Padding(
@@ -75,13 +83,13 @@ class _AppVersionPageState extends State<AppVersionPage> {
7583
mainAxisAlignment:MainAxisAlignment.spaceBetween,
7684
children: [
7785
Text(
78-
'${'version'.tr} ${version['version']}',
86+
'${'version'.tr} ${version.version}',
7987
style:constTextStyle(
8088
fontSize:18,
8189
fontWeight:FontWeight.bold,
8290
),
8391
),
84-
if (version['forceUpdate']==true)
92+
if (version.forceUpdate==true)
8593
Container(
8694
padding:constEdgeInsets.symmetric(
8795
horizontal:8,
@@ -103,17 +111,14 @@ class _AppVersionPageState extends State<AppVersionPage> {
103111
],
104112
),
105113
constSizedBox(height:8),
106-
Text('${'release_date'.tr}: ${version['releaseDate']}'),
114+
Text('${'release_date'.tr}: ${version.releaseDate}'),
107115
constSizedBox(height:8),
108-
Text('${'update_content'.tr}: ${version['releaseNotes']}'),
116+
Text('${'update_content'.tr}: ${version.releaseNotes}'),
109117
constSizedBox(height:12),
110118
ElevatedButton(
111119
onPressed: () {
112120
// 跳转到更新页面,传递整个version对象
113-
Get.toNamed(
114-
AppRoutes.UPDATE,
115-
arguments: {'version': version},
116-
);
121+
Get.toNamed(AppRoutes.UPDATE, arguments: {'version': version});
117122
},
118123
child:Text('update_app'.tr),
119124
),

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp