reason

修改用户信息页面

1 +import 'dart:convert';
2 +import 'package:Parlando/generated/json/base/json_field.dart';
3 +import 'package:Parlando/generated/json/upload_avatar_entity.g.dart';
4 +
5 +@JsonSerializable()
6 +class UploadAvatarEntity {
7 + String? status;
8 + int? code;
9 + String? message;
10 + UploadAvatarData? data;
11 + UploadAvatarError? error;
12 +
13 + UploadAvatarEntity();
14 +
15 + factory UploadAvatarEntity.fromJson(Map<String, dynamic> json) =>
16 + $UploadAvatarEntityFromJson(json);
17 +
18 + Map<String, dynamic> toJson() => $UploadAvatarEntityToJson(this);
19 +
20 + @override
21 + String toString() {
22 + return jsonEncode(this);
23 + }
24 +}
25 +
26 +@JsonSerializable()
27 +class UploadAvatarData {
28 + String? avatar;
29 +
30 + UploadAvatarData();
31 +
32 + factory UploadAvatarData.fromJson(Map<String, dynamic> json) =>
33 + $UploadAvatarDataFromJson(json);
34 +
35 + Map<String, dynamic> toJson() => $UploadAvatarDataToJson(this);
36 +
37 + @override
38 + String toString() {
39 + return jsonEncode(this);
40 + }
41 +}
42 +
43 +@JsonSerializable()
44 +class UploadAvatarError {
45 + UploadAvatarError();
46 +
47 + factory UploadAvatarError.fromJson(Map<String, dynamic> json) =>
48 + $UploadAvatarErrorFromJson(json);
49 +
50 + Map<String, dynamic> toJson() => $UploadAvatarErrorToJson(this);
51 +
52 + @override
53 + String toString() {
54 + return jsonEncode(this);
55 + }
56 +}
This diff is collapsed. Click to expand it.
...@@ -3,6 +3,7 @@ import 'package:Parlando/account/view_models/account_view_model.dart'; ...@@ -3,6 +3,7 @@ import 'package:Parlando/account/view_models/account_view_model.dart';
3 import 'package:Parlando/apis/api_response.dart'; 3 import 'package:Parlando/apis/api_response.dart';
4 import 'package:Parlando/login/login_router.dart'; 4 import 'package:Parlando/login/login_router.dart';
5 import 'package:Parlando/res/constant.dart'; 5 import 'package:Parlando/res/constant.dart';
6 +import 'package:cached_network_image/cached_network_image.dart';
6 import 'package:flustars/flustars.dart'; 7 import 'package:flustars/flustars.dart';
7 import 'package:flutter/material.dart'; 8 import 'package:flutter/material.dart';
8 import 'package:Parlando/membership/membership_router.dart'; 9 import 'package:Parlando/membership/membership_router.dart';
...@@ -98,9 +99,12 @@ class _AccountPageState extends State<AccountPage> { ...@@ -98,9 +99,12 @@ class _AccountPageState extends State<AccountPage> {
98 ), 99 ),
99 ), 100 ),
100 child: ClipOval( 101 child: ClipOval(
101 - child: Image.network( 102 + child: CachedNetworkImage(
102 - "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",
103 fit: BoxFit.cover, 103 fit: BoxFit.cover,
104 + placeholder: (context, url) =>
105 + const CircularProgressIndicator(),
106 + errorWidget: (context, url, error) => const Icon(Icons.error),
107 + imageUrl: _user.avatar!,
104 ), 108 ),
105 ), 109 ),
106 ), 110 ),
......
...@@ -17,7 +17,7 @@ class AccountViewProvider with ChangeNotifier { ...@@ -17,7 +17,7 @@ class AccountViewProvider with ChangeNotifier {
17 } 17 }
18 18
19 Future<void> fetchAccountData(String value) async { 19 Future<void> fetchAccountData(String value) async {
20 - _apiResponse = ApiResponse.loading('Fetching artist data'); 20 + _apiResponse = ApiResponse.loading('请求数据中...');
21 DioUtils.instance.asyncRequestNetwork<UserEntity>( 21 DioUtils.instance.asyncRequestNetwork<UserEntity>(
22 Method.get, 22 Method.get,
23 HttpApi.user, 23 HttpApi.user,
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
4 4
5 // This file is automatically generated. DO NOT EDIT, all your changes would be lost. 5 // This file is automatically generated. DO NOT EDIT, all your changes would be lost.
6 import 'package:flutter/material.dart'; 6 import 'package:flutter/material.dart';
7 +import 'package:Parlando/account/models/upload_avatar_entity.dart';
7 import 'package:Parlando/account/models/user_entity.dart'; 8 import 'package:Parlando/account/models/user_entity.dart';
8 import 'package:Parlando/category/models/category_item_entity.dart'; 9 import 'package:Parlando/category/models/category_item_entity.dart';
9 import 'package:Parlando/home/models/setting_entity.dart'; 10 import 'package:Parlando/home/models/setting_entity.dart';
...@@ -18,17 +19,20 @@ typedef JsonConvertFunction<T> = T Function(Map<String, dynamic> json); ...@@ -18,17 +19,20 @@ typedef JsonConvertFunction<T> = T Function(Map<String, dynamic> json);
18 19
19 class JsonConvert { 20 class JsonConvert {
20 static final Map<String, JsonConvertFunction> _convertFuncMap = { 21 static final Map<String, JsonConvertFunction> _convertFuncMap = {
21 - (UserEntity).toString(): UserEntity.fromJson, 22 + (UploadAvatarEntity).toString(): UploadAvatarEntity.fromJson,
22 - (UserData).toString(): UserData.fromJson, 23 + (UploadAvatarData).toString(): UploadAvatarData.fromJson,
23 - (UserError).toString(): UserError.fromJson, 24 + (UploadAvatarError).toString(): UploadAvatarError.fromJson,
24 - (CategoryItemEntity).toString(): CategoryItemEntity.fromJson, 25 + (UserEntity).toString(): UserEntity.fromJson,
25 - (SettingEntity).toString(): SettingEntity.fromJson, 26 + (UserData).toString(): UserData.fromJson,
26 - (SettingData).toString(): SettingData.fromJson, 27 + (UserError).toString(): UserError.fromJson,
27 - (SettingDataLoginSetting).toString(): SettingDataLoginSetting.fromJson, 28 + (CategoryItemEntity).toString(): CategoryItemEntity.fromJson,
28 - (SettingError).toString(): SettingError.fromJson, 29 + (SettingEntity).toString(): SettingEntity.fromJson,
29 - (AuthEntity).toString(): AuthEntity.fromJson, 30 + (SettingData).toString(): SettingData.fromJson,
30 - (AuthData).toString(): AuthData.fromJson, 31 + (SettingDataLoginSetting).toString(): SettingDataLoginSetting.fromJson,
31 - (AuthError).toString(): AuthError.fromJson, 32 + (SettingError).toString(): SettingError.fromJson,
33 + (AuthEntity).toString(): AuthEntity.fromJson,
34 + (AuthData).toString(): AuthData.fromJson,
35 + (AuthError).toString(): AuthError.fromJson,
32 (UploadEntity).toString(): UploadEntity.fromJson, 36 (UploadEntity).toString(): UploadEntity.fromJson,
33 (UploadData).toString(): UploadData.fromJson, 37 (UploadData).toString(): UploadData.fromJson,
34 (UploadError).toString(): UploadError.fromJson, 38 (UploadError).toString(): UploadError.fromJson,
...@@ -114,73 +118,97 @@ class JsonConvert { ...@@ -114,73 +118,97 @@ class JsonConvert {
114 118
115 //list is returned by type 119 //list is returned by type
116 static M? _getListChildType<M>(List<Map<String, dynamic>> data) { 120 static M? _getListChildType<M>(List<Map<String, dynamic>> data) {
117 - if(<UserEntity>[] is M){ 121 + if (<UploadAvatarEntity>[] is M) {
118 - return data.map<UserEntity>((Map<String, dynamic> e) => UserEntity.fromJson(e)).toList() as M; 122 + return data
119 - } 123 + .map<UploadAvatarEntity>(
120 - if(<UserData>[] is M){ 124 + (Map<String, dynamic> e) => UploadAvatarEntity.fromJson(e))
121 - return data.map<UserData>((Map<String, dynamic> e) => UserData.fromJson(e)).toList() as M; 125 + .toList() as M;
122 - } 126 + }
123 - if(<UserError>[] is M){ 127 + if (<UploadAvatarData>[] is M) {
124 - return data.map<UserError>((Map<String, dynamic> e) => UserError.fromJson(e)).toList() as M; 128 + return data
125 - } 129 + .map<UploadAvatarData>(
126 - if(<CategoryItemEntity>[] is M){ 130 + (Map<String, dynamic> e) => UploadAvatarData.fromJson(e))
127 - return data.map<CategoryItemEntity>((Map<String, dynamic> e) => CategoryItemEntity.fromJson(e)).toList() as M; 131 + .toList() as M;
128 - } 132 + }
129 - if(<SettingEntity>[] is M){ 133 + if (<UploadAvatarError>[] is M) {
130 - return data.map<SettingEntity>((Map<String, dynamic> e) => SettingEntity.fromJson(e)).toList() as M; 134 + return data
131 - } 135 + .map<UploadAvatarError>(
132 - if(<SettingData>[] is M){ 136 + (Map<String, dynamic> e) => UploadAvatarError.fromJson(e))
133 - return data.map<SettingData>((Map<String, dynamic> e) => SettingData.fromJson(e)).toList() as M; 137 + .toList() as M;
134 - } 138 + }
135 - if(<SettingDataLoginSetting>[] is M){ 139 + if (<UserEntity>[] is M) {
136 - return data.map<SettingDataLoginSetting>((Map<String, dynamic> e) => SettingDataLoginSetting.fromJson(e)).toList() as M; 140 + return data
137 - } 141 + .map<UserEntity>((Map<String, dynamic> e) => UserEntity.fromJson(e))
138 - if(<SettingError>[] is M){ 142 + .toList() as M;
139 - return data.map<SettingError>((Map<String, dynamic> e) => SettingError.fromJson(e)).toList() as M; 143 + }
140 - } 144 + if (<UserData>[] is M) {
141 - if(<AuthEntity>[] is M){ 145 + return data
142 - return data.map<AuthEntity>((Map<String, dynamic> e) => AuthEntity.fromJson(e)).toList() as M; 146 + .map<UserData>((Map<String, dynamic> e) => UserData.fromJson(e))
143 - } 147 + .toList() as M;
144 - if(<AuthData>[] is M){ 148 + }
145 - return data.map<AuthData>((Map<String, dynamic> e) => AuthData.fromJson(e)).toList() as M; 149 + if (<UserError>[] is M) {
146 - } 150 + return data
147 - if(<AuthError>[] is M){ 151 + .map<UserError>((Map<String, dynamic> e) => UserError.fromJson(e))
148 - return data.map<AuthError>((Map<String, dynamic> e) => AuthError.fromJson(e)).toList() as M; 152 + .toList() as M;
149 - } 153 + }
150 - if(<UploadEntity>[] is M){ 154 + if (<CategoryItemEntity>[] is M) {
151 - return data.map<UploadEntity>((Map<String, dynamic> e) => UploadEntity.fromJson(e)).toList() as M; 155 + return data.map<CategoryItemEntity>((Map<String, dynamic> e) => CategoryItemEntity.fromJson(e)).toList() as M;
152 - } 156 + }
153 - if(<UploadData>[] is M){ 157 + if(<SettingEntity>[] is M){
154 - return data.map<UploadData>((Map<String, dynamic> e) => UploadData.fromJson(e)).toList() as M; 158 + return data.map<SettingEntity>((Map<String, dynamic> e) => SettingEntity.fromJson(e)).toList() as M;
155 - } 159 + }
156 - if(<UploadError>[] is M){ 160 + if(<SettingData>[] is M){
157 - return data.map<UploadError>((Map<String, dynamic> e) => UploadError.fromJson(e)).toList() as M; 161 + return data.map<SettingData>((Map<String, dynamic> e) => SettingData.fromJson(e)).toList() as M;
158 - } 162 + }
159 - if(<LangSortEntity>[] is M){ 163 + if(<SettingDataLoginSetting>[] is M){
160 - return data.map<LangSortEntity>((Map<String, dynamic> e) => LangSortEntity.fromJson(e)).toList() as M; 164 + return data.map<SettingDataLoginSetting>((Map<String, dynamic> e) => SettingDataLoginSetting.fromJson(e)).toList() as M;
161 - } 165 + }
162 - if(<SearchEntity>[] is M){ 166 + if(<SettingError>[] is M){
163 - return data.map<SearchEntity>((Map<String, dynamic> e) => SearchEntity.fromJson(e)).toList() as M; 167 + return data.map<SettingError>((Map<String, dynamic> e) => SettingError.fromJson(e)).toList() as M;
164 - } 168 + }
165 - if(<SearchItems>[] is M){ 169 + if(<AuthEntity>[] is M){
166 - return data.map<SearchItems>((Map<String, dynamic> e) => SearchItems.fromJson(e)).toList() as M; 170 + return data.map<AuthEntity>((Map<String, dynamic> e) => AuthEntity.fromJson(e)).toList() as M;
167 - } 171 + }
168 - if(<SearchItemsOwner>[] is M){ 172 + if(<AuthData>[] is M){
169 - return data.map<SearchItemsOwner>((Map<String, dynamic> e) => SearchItemsOwner.fromJson(e)).toList() as M; 173 + return data.map<AuthData>((Map<String, dynamic> e) => AuthData.fromJson(e)).toList() as M;
170 - } 174 + }
171 - if(<SearchItemsLicense>[] is M){ 175 + if(<AuthError>[] is M){
172 - return data.map<SearchItemsLicense>((Map<String, dynamic> e) => SearchItemsLicense.fromJson(e)).toList() as M; 176 + return data.map<AuthError>((Map<String, dynamic> e) => AuthError.fromJson(e)).toList() as M;
173 - } 177 + }
174 - if(<FriendEntity>[] is M){ 178 + if(<UploadEntity>[] is M){
175 - return data.map<FriendEntity>((Map<String, dynamic> e) => FriendEntity.fromJson(e)).toList() as M; 179 + return data.map<UploadEntity>((Map<String, dynamic> e) => UploadEntity.fromJson(e)).toList() as M;
176 - } 180 + }
177 - if(<FriendData>[] is M){ 181 + if(<UploadData>[] is M){
178 - return data.map<FriendData>((Map<String, dynamic> e) => FriendData.fromJson(e)).toList() as M; 182 + return data.map<UploadData>((Map<String, dynamic> e) => UploadData.fromJson(e)).toList() as M;
179 - } 183 + }
184 + if(<UploadError>[] is M){
185 + return data.map<UploadError>((Map<String, dynamic> e) => UploadError.fromJson(e)).toList() as M;
186 + }
187 + if(<LangSortEntity>[] is M){
188 + return data.map<LangSortEntity>((Map<String, dynamic> e) => LangSortEntity.fromJson(e)).toList() as M;
189 + }
190 + if(<SearchEntity>[] is M){
191 + return data.map<SearchEntity>((Map<String, dynamic> e) => SearchEntity.fromJson(e)).toList() as M;
192 + }
193 + if(<SearchItems>[] is M){
194 + return data.map<SearchItems>((Map<String, dynamic> e) => SearchItems.fromJson(e)).toList() as M;
195 + }
196 + if(<SearchItemsOwner>[] is M){
197 + return data.map<SearchItemsOwner>((Map<String, dynamic> e) => SearchItemsOwner.fromJson(e)).toList() as M;
198 + }
199 + if(<SearchItemsLicense>[] is M){
200 + return data.map<SearchItemsLicense>((Map<String, dynamic> e) => SearchItemsLicense.fromJson(e)).toList() as M;
201 + }
202 + if(<FriendEntity>[] is M){
203 + return data.map<FriendEntity>((Map<String, dynamic> e) => FriendEntity.fromJson(e)).toList() as M;
204 + }
205 + if(<FriendData>[] is M){
206 + return data.map<FriendData>((Map<String, dynamic> e) => FriendData.fromJson(e)).toList() as M;
207 + }
208 +
209 + debugPrint("${M.toString()} not found");
180 210
181 - debugPrint("${M.toString()} not found"); 211 + return null;
182 -
183 - return null;
184 } 212 }
185 213
186 static M? fromJsonAsT<M>(dynamic json) { 214 static M? fromJsonAsT<M>(dynamic json) {
......
1 +import 'package:Parlando/generated/json/base/json_convert_content.dart';
2 +import 'package:Parlando/account/models/upload_avatar_entity.dart';
3 +
4 +UploadAvatarEntity $UploadAvatarEntityFromJson(Map<String, dynamic> json) {
5 + final UploadAvatarEntity uploadAvatarEntity = UploadAvatarEntity();
6 + final String? status = jsonConvert.convert<String>(json['status']);
7 + if (status != null) {
8 + uploadAvatarEntity.status = status;
9 + }
10 + final int? code = jsonConvert.convert<int>(json['code']);
11 + if (code != null) {
12 + uploadAvatarEntity.code = code;
13 + }
14 + final String? message = jsonConvert.convert<String>(json['message']);
15 + if (message != null) {
16 + uploadAvatarEntity.message = message;
17 + }
18 + final UploadAvatarData? data =
19 + jsonConvert.convert<UploadAvatarData>(json['data']);
20 + if (data != null) {
21 + uploadAvatarEntity.data = data;
22 + }
23 + final UploadAvatarError? error =
24 + jsonConvert.convert<UploadAvatarError>(json['error']);
25 + if (error != null) {
26 + uploadAvatarEntity.error = error;
27 + }
28 + return uploadAvatarEntity;
29 +}
30 +
31 +Map<String, dynamic> $UploadAvatarEntityToJson(UploadAvatarEntity entity) {
32 + final Map<String, dynamic> data = <String, dynamic>{};
33 + data['status'] = entity.status;
34 + data['code'] = entity.code;
35 + data['message'] = entity.message;
36 + data['data'] = entity.data?.toJson();
37 + data['error'] = entity.error?.toJson();
38 + return data;
39 +}
40 +
41 +UploadAvatarData $UploadAvatarDataFromJson(Map<String, dynamic> json) {
42 + final UploadAvatarData uploadAvatarData = UploadAvatarData();
43 + final String? avatar = jsonConvert.convert<String>(json['avatar']);
44 + if (avatar != null) {
45 + uploadAvatarData.avatar = avatar;
46 + }
47 + return uploadAvatarData;
48 +}
49 +
50 +Map<String, dynamic> $UploadAvatarDataToJson(UploadAvatarData entity) {
51 + final Map<String, dynamic> data = <String, dynamic>{};
52 + data['avatar'] = entity.avatar;
53 + return data;
54 +}
55 +
56 +UploadAvatarError $UploadAvatarErrorFromJson(Map<String, dynamic> json) {
57 + final UploadAvatarError uploadAvatarError = UploadAvatarError();
58 + return uploadAvatarError;
59 +}
60 +
61 +Map<String, dynamic> $UploadAvatarErrorToJson(UploadAvatarError entity) {
62 + final Map<String, dynamic> data = <String, dynamic>{};
63 + return data;
64 +}
...@@ -4,7 +4,9 @@ class HttpApi { ...@@ -4,7 +4,9 @@ class HttpApi {
4 static const String verify = 'verify'; 4 static const String verify = 'verify';
5 static const String login = 'login'; 5 static const String login = 'login';
6 static const String uploadVideo = 'upload/video'; 6 static const String uploadVideo = 'upload/video';
7 + static const String uploadImage = 'upload/image';
7 static const String immersive = 'immersive'; 8 static const String immersive = 'immersive';
9 + static const String avatar = 'avatar';
8 static const String user = 'user'; 10 static const String user = 'user';
9 static const String search = 'search/repositories'; 11 static const String search = 'search/repositories';
10 static const String subscriptions = 'users/simplezhli/subscriptions'; 12 static const String subscriptions = 'users/simplezhli/subscriptions';
......
...@@ -215,7 +215,7 @@ class _PoemPublishState extends State<PoemPublish> { ...@@ -215,7 +215,7 @@ class _PoemPublishState extends State<PoemPublish> {
215 final directory = await getApplicationDocumentsDirectory(); 215 final directory = await getApplicationDocumentsDirectory();
216 dynamic video = await MultipartFile.fromFile( 216 dynamic video = await MultipartFile.fromFile(
217 directory.path + "/" + widget.data, 217 directory.path + "/" + widget.data,
218 - filename: "xxx23.png"); 218 + filename: "video.mp4");
219 return video; 219 return video;
220 } 220 }
221 221
......