Toggle navigation
Toggle navigation
This project
Loading...
Sign in
OnePoem
/
OnePoem-App
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
reason
2022-05-05 22:29:44 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
60416b4e01460f0340f2fd349d9ee8a62b8044b7
60416b4e
1 parent
4e44d1da
修改用户信息页面
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
241 additions
and
28 deletions
lib/account/models/upload_avatar_entity.dart
lib/account/page/account_edit_page.dart
lib/account/page/account_page.dart
lib/account/view_models/account_view_model.dart
lib/generated/json/base/json_convert_content.dart
lib/generated/json/upload_avatar_entity.g.dart
lib/net/http_api.dart
lib/poem/page/poem_publish.dart
lib/account/models/upload_avatar_entity.dart
0 → 100644
View file @
60416b4
import
'dart:convert'
;
import
'package:Parlando/generated/json/base/json_field.dart'
;
import
'package:Parlando/generated/json/upload_avatar_entity.g.dart'
;
@JsonSerializable
()
class
UploadAvatarEntity
{
String
?
status
;
int
?
code
;
String
?
message
;
UploadAvatarData
?
data
;
UploadAvatarError
?
error
;
UploadAvatarEntity
();
factory
UploadAvatarEntity
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
=>
$UploadAvatarEntityFromJson
(
json
);
Map
<
String
,
dynamic
>
toJson
()
=>
$UploadAvatarEntityToJson
(
this
);
@override
String
toString
()
{
return
jsonEncode
(
this
);
}
}
@JsonSerializable
()
class
UploadAvatarData
{
String
?
avatar
;
UploadAvatarData
();
factory
UploadAvatarData
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
=>
$UploadAvatarDataFromJson
(
json
);
Map
<
String
,
dynamic
>
toJson
()
=>
$UploadAvatarDataToJson
(
this
);
@override
String
toString
()
{
return
jsonEncode
(
this
);
}
}
@JsonSerializable
()
class
UploadAvatarError
{
UploadAvatarError
();
factory
UploadAvatarError
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
=>
$UploadAvatarErrorFromJson
(
json
);
Map
<
String
,
dynamic
>
toJson
()
=>
$UploadAvatarErrorToJson
(
this
);
@override
String
toString
()
{
return
jsonEncode
(
this
);
}
}
lib/account/page/account_edit_page.dart
View file @
60416b4
import
'package:Parlando/account/models/upload_avatar_entity.dart'
;
import
'package:Parlando/models/upload_entity.dart'
;
import
'package:Parlando/net/dio_utils.dart'
;
import
'package:Parlando/net/http_api.dart'
;
import
'package:Parlando/util/toast_utils.dart'
;
import
'package:cached_network_image/cached_network_image.dart'
;
import
'package:dio/dio.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/material.dart'
;
import
'package:Parlando/extension/int_extension.dart'
;
import
'package:Parlando/widgets/my_app_bar.dart'
;
...
...
@@ -15,7 +23,10 @@ class AccountEditPage extends StatefulWidget {
class
MapScreenState
extends
State
<
AccountEditPage
>
with
SingleTickerProviderStateMixin
{
bool
_status
=
true
;
bool
isUpdateAvatar
=
false
;
final
FocusNode
myFocusNode
=
FocusNode
();
String
_imageFile
=
'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif'
;
@override
void
initState
()
{
...
...
@@ -52,9 +63,13 @@ class MapScreenState extends State<AccountEditPage>
width:
140
.
px
,
margin:
EdgeInsets
.
only
(
bottom:
12
.
px
),
child:
ClipOval
(
child:
Image
.
network
(
"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif"
,
child:
CachedNetworkImage
(
fit:
BoxFit
.
cover
,
placeholder:
(
context
,
url
)
=>
const
CircularProgressIndicator
(),
errorWidget:
(
context
,
url
,
error
)
=>
const
Icon
(
Icons
.
error
),
imageUrl:
_imageFile
,
),
),
),
...
...
@@ -99,10 +114,8 @@ class MapScreenState extends State<AccountEditPage>
ImageSource
.
camera
,
context:
context
,
capturedImageFile:
(
s
)
{
setState
(()
{
print
(
s
);
// _imageFile = s;
});
_imageFile
=
s
;
updateAvatar
(
s
);
},
);
},
...
...
@@ -122,11 +135,8 @@ class MapScreenState extends State<AccountEditPage>
ImageSource
.
gallery
,
context:
context
,
capturedImageFile:
(
s
)
{
print
(
"file path
${s}
"
);
setState
(()
{
// _imageFile = s;
});
_imageFile
=
s
;
updateAvatar
(
s
);
},
);
},
...
...
@@ -138,6 +148,13 @@ class MapScreenState extends State<AccountEditPage>
)
],
)),
isUpdateAvatar
?
const
Center
(
child:
CupertinoActivityIndicator
(
radius:
16.0
,
),
)
:
Container
(),
]),
)
],
...
...
@@ -158,8 +175,7 @@ class MapScreenState extends State<AccountEditPage>
top:
5
.
px
,
),
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
mainAxisSize:
MainAxisSize
.
max
,
children:
<
Widget
>[
Column
(
...
...
@@ -397,7 +413,8 @@ class MapScreenState extends State<AccountEditPage>
),
],
),
));
),
);
}
@override
...
...
@@ -473,6 +490,48 @@ class MapScreenState extends State<AccountEditPage>
},
);
}
Future
<
void
>
updateAvatar
(
String
path
)
async
{
isUpdateAvatar
=
true
;
dynamic
avatar
=
await
MultipartFile
.
fromFile
(
path
,
filename:
"avatar.png"
);
Map
<
String
,
dynamic
>
map
=
<
String
,
dynamic
>{
"image"
:
avatar
,
};
FormData
formData
=
FormData
.
fromMap
(
map
);
DioUtils
.
instance
.
asyncRequestNetwork
<
UploadEntity
>(
Method
.
post
,
HttpApi
.
uploadImage
,
params:
formData
,
onSuccess:
(
data
)
{
String
path
=
data
!.
data
!.
relativePath
!;
Map
<
String
,
String
>
params
=
<
String
,
String
>{
"avatar"
:
path
,
};
DioUtils
.
instance
.
asyncRequestNetwork
<
UploadAvatarEntity
>(
Method
.
post
,
HttpApi
.
avatar
,
params:
params
,
onSuccess:
(
data
)
{
isUpdateAvatar
=
false
;
setState
(()
{
_imageFile
=
data
!.
data
!.
avatar
!;
});
Toast
.
show
(
"头像更新成功"
);
},
onError:
(
code
,
msg
)
{
Toast
.
show
(
msg
.
toString
());
isUpdateAvatar
=
false
;
setState
(()
{});
},
);
},
onError:
(
code
,
msg
)
{
isUpdateAvatar
=
false
;
setState
(()
{});
},
);
}
}
typedef
CapturedImageFile
=
String
Function
(
String
);
...
...
lib/account/page/account_page.dart
View file @
60416b4
...
...
@@ -3,6 +3,7 @@ import 'package:Parlando/account/view_models/account_view_model.dart';
import
'package:Parlando/apis/api_response.dart'
;
import
'package:Parlando/login/login_router.dart'
;
import
'package:Parlando/res/constant.dart'
;
import
'package:cached_network_image/cached_network_image.dart'
;
import
'package:flustars/flustars.dart'
;
import
'package:flutter/material.dart'
;
import
'package:Parlando/membership/membership_router.dart'
;
...
...
@@ -98,9 +99,12 @@ class _AccountPageState extends State<AccountPage> {
),
),
child:
ClipOval
(
child:
Image
.
network
(
"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif"
,
child:
CachedNetworkImage
(
fit:
BoxFit
.
cover
,
placeholder:
(
context
,
url
)
=>
const
CircularProgressIndicator
(),
errorWidget:
(
context
,
url
,
error
)
=>
const
Icon
(
Icons
.
error
),
imageUrl:
_user
.
avatar
!,
),
),
),
...
...
lib/account/view_models/account_view_model.dart
View file @
60416b4
...
...
@@ -17,7 +17,7 @@ class AccountViewProvider with ChangeNotifier {
}
Future
<
void
>
fetchAccountData
(
String
value
)
async
{
_apiResponse
=
ApiResponse
.
loading
(
'
Fetching artist data
'
);
_apiResponse
=
ApiResponse
.
loading
(
'
请求数据中...
'
);
DioUtils
.
instance
.
asyncRequestNetwork
<
UserEntity
>(
Method
.
get
,
HttpApi
.
user
,
...
...
lib/generated/json/base/json_convert_content.dart
View file @
60416b4
...
...
@@ -4,6 +4,7 @@
// This file is automatically generated. DO NOT EDIT, all your changes would be lost.
import
'package:flutter/material.dart'
;
import
'package:Parlando/account/models/upload_avatar_entity.dart'
;
import
'package:Parlando/account/models/user_entity.dart'
;
import
'package:Parlando/category/models/category_item_entity.dart'
;
import
'package:Parlando/home/models/setting_entity.dart'
;
...
...
@@ -18,6 +19,9 @@ typedef JsonConvertFunction<T> = T Function(Map<String, dynamic> json);
class
JsonConvert
{
static
final
Map
<
String
,
JsonConvertFunction
>
_convertFuncMap
=
{
(
UploadAvatarEntity
).
toString
():
UploadAvatarEntity
.
fromJson
,
(
UploadAvatarData
).
toString
():
UploadAvatarData
.
fromJson
,
(
UploadAvatarError
).
toString
():
UploadAvatarError
.
fromJson
,
(
UserEntity
).
toString
():
UserEntity
.
fromJson
,
(
UserData
).
toString
():
UserData
.
fromJson
,
(
UserError
).
toString
():
UserError
.
fromJson
,
...
...
@@ -114,16 +118,40 @@ class JsonConvert {
//list is returned by type
static
M
?
_getListChildType
<
M
>(
List
<
Map
<
String
,
dynamic
>>
data
)
{
if
(<
UserEntity
>[]
is
M
){
return
data
.
map
<
UserEntity
>((
Map
<
String
,
dynamic
>
e
)
=>
UserEntity
.
fromJson
(
e
)).
toList
()
as
M
;
}
if
(<
UserData
>[]
is
M
){
return
data
.
map
<
UserData
>((
Map
<
String
,
dynamic
>
e
)
=>
UserData
.
fromJson
(
e
)).
toList
()
as
M
;
}
if
(<
UserError
>[]
is
M
){
return
data
.
map
<
UserError
>((
Map
<
String
,
dynamic
>
e
)
=>
UserError
.
fromJson
(
e
)).
toList
()
as
M
;
}
if
(<
CategoryItemEntity
>[]
is
M
){
if
(<
UploadAvatarEntity
>[]
is
M
)
{
return
data
.
map
<
UploadAvatarEntity
>(
(
Map
<
String
,
dynamic
>
e
)
=>
UploadAvatarEntity
.
fromJson
(
e
))
.
toList
()
as
M
;
}
if
(<
UploadAvatarData
>[]
is
M
)
{
return
data
.
map
<
UploadAvatarData
>(
(
Map
<
String
,
dynamic
>
e
)
=>
UploadAvatarData
.
fromJson
(
e
))
.
toList
()
as
M
;
}
if
(<
UploadAvatarError
>[]
is
M
)
{
return
data
.
map
<
UploadAvatarError
>(
(
Map
<
String
,
dynamic
>
e
)
=>
UploadAvatarError
.
fromJson
(
e
))
.
toList
()
as
M
;
}
if
(<
UserEntity
>[]
is
M
)
{
return
data
.
map
<
UserEntity
>((
Map
<
String
,
dynamic
>
e
)
=>
UserEntity
.
fromJson
(
e
))
.
toList
()
as
M
;
}
if
(<
UserData
>[]
is
M
)
{
return
data
.
map
<
UserData
>((
Map
<
String
,
dynamic
>
e
)
=>
UserData
.
fromJson
(
e
))
.
toList
()
as
M
;
}
if
(<
UserError
>[]
is
M
)
{
return
data
.
map
<
UserError
>((
Map
<
String
,
dynamic
>
e
)
=>
UserError
.
fromJson
(
e
))
.
toList
()
as
M
;
}
if
(<
CategoryItemEntity
>[]
is
M
)
{
return
data
.
map
<
CategoryItemEntity
>((
Map
<
String
,
dynamic
>
e
)
=>
CategoryItemEntity
.
fromJson
(
e
)).
toList
()
as
M
;
}
if
(<
SettingEntity
>[]
is
M
){
...
...
lib/generated/json/upload_avatar_entity.g.dart
0 → 100644
View file @
60416b4
import
'package:Parlando/generated/json/base/json_convert_content.dart'
;
import
'package:Parlando/account/models/upload_avatar_entity.dart'
;
UploadAvatarEntity
$UploadAvatarEntityFromJson
(
Map
<
String
,
dynamic
>
json
)
{
final
UploadAvatarEntity
uploadAvatarEntity
=
UploadAvatarEntity
();
final
String
?
status
=
jsonConvert
.
convert
<
String
>(
json
[
'status'
]);
if
(
status
!=
null
)
{
uploadAvatarEntity
.
status
=
status
;
}
final
int
?
code
=
jsonConvert
.
convert
<
int
>(
json
[
'code'
]);
if
(
code
!=
null
)
{
uploadAvatarEntity
.
code
=
code
;
}
final
String
?
message
=
jsonConvert
.
convert
<
String
>(
json
[
'message'
]);
if
(
message
!=
null
)
{
uploadAvatarEntity
.
message
=
message
;
}
final
UploadAvatarData
?
data
=
jsonConvert
.
convert
<
UploadAvatarData
>(
json
[
'data'
]);
if
(
data
!=
null
)
{
uploadAvatarEntity
.
data
=
data
;
}
final
UploadAvatarError
?
error
=
jsonConvert
.
convert
<
UploadAvatarError
>(
json
[
'error'
]);
if
(
error
!=
null
)
{
uploadAvatarEntity
.
error
=
error
;
}
return
uploadAvatarEntity
;
}
Map
<
String
,
dynamic
>
$UploadAvatarEntityToJson
(
UploadAvatarEntity
entity
)
{
final
Map
<
String
,
dynamic
>
data
=
<
String
,
dynamic
>{};
data
[
'status'
]
=
entity
.
status
;
data
[
'code'
]
=
entity
.
code
;
data
[
'message'
]
=
entity
.
message
;
data
[
'data'
]
=
entity
.
data
?.
toJson
();
data
[
'error'
]
=
entity
.
error
?.
toJson
();
return
data
;
}
UploadAvatarData
$UploadAvatarDataFromJson
(
Map
<
String
,
dynamic
>
json
)
{
final
UploadAvatarData
uploadAvatarData
=
UploadAvatarData
();
final
String
?
avatar
=
jsonConvert
.
convert
<
String
>(
json
[
'avatar'
]);
if
(
avatar
!=
null
)
{
uploadAvatarData
.
avatar
=
avatar
;
}
return
uploadAvatarData
;
}
Map
<
String
,
dynamic
>
$UploadAvatarDataToJson
(
UploadAvatarData
entity
)
{
final
Map
<
String
,
dynamic
>
data
=
<
String
,
dynamic
>{};
data
[
'avatar'
]
=
entity
.
avatar
;
return
data
;
}
UploadAvatarError
$UploadAvatarErrorFromJson
(
Map
<
String
,
dynamic
>
json
)
{
final
UploadAvatarError
uploadAvatarError
=
UploadAvatarError
();
return
uploadAvatarError
;
}
Map
<
String
,
dynamic
>
$UploadAvatarErrorToJson
(
UploadAvatarError
entity
)
{
final
Map
<
String
,
dynamic
>
data
=
<
String
,
dynamic
>{};
return
data
;
}
lib/net/http_api.dart
View file @
60416b4
...
...
@@ -4,7 +4,9 @@ class HttpApi {
static
const
String
verify
=
'verify'
;
static
const
String
login
=
'login'
;
static
const
String
uploadVideo
=
'upload/video'
;
static
const
String
uploadImage
=
'upload/image'
;
static
const
String
immersive
=
'immersive'
;
static
const
String
avatar
=
'avatar'
;
static
const
String
user
=
'user'
;
static
const
String
search
=
'search/repositories'
;
static
const
String
subscriptions
=
'users/simplezhli/subscriptions'
;
...
...
lib/poem/page/poem_publish.dart
View file @
60416b4
...
...
@@ -215,7 +215,7 @@ class _PoemPublishState extends State<PoemPublish> {
final
directory
=
await
getApplicationDocumentsDirectory
();
dynamic
video
=
await
MultipartFile
.
fromFile
(
directory
.
path
+
"/"
+
widget
.
data
,
filename:
"
xxx23.png
"
);
filename:
"
video.mp4
"
);
return
video
;
}
...
...
Please
register
or
login
to post a comment