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-07-08 17:11:05 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
92399115d595f60de647eb53463340a44258141b
92399115
1 parent
174fb7ee
修改上传视频逻辑
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
104 additions
and
7 deletions
lib/net/dio_utils.dart
lib/poem/page/poem_publish.dart
lib/poem/page/select_address_page.dart
pubspec.yaml
lib/net/dio_utils.dart
View file @
9239911
...
...
@@ -114,6 +114,36 @@ class DioUtils {
}
}
// 数据返回格式统一,统一处理异常
Future
<
BaseEntity
<
T
>>
_upload
<
T
>(
String
method
,
String
url
,
{
Object
?
data
,
Map
<
String
,
dynamic
>?
queryParameters
,
CancelToken
?
cancelToken
,
ProgressCallback
?
progressCallback
,
Options
?
options
,
})
async
{
final
Response
<
String
>
response
=
await
_dio
.
post
<
String
>(
url
,
data:
data
,
queryParameters:
queryParameters
,
options:
_checkOptions
(
method
,
options
),
cancelToken:
cancelToken
,
onSendProgress:
progressCallback
,
);
try
{
final
String
data
=
response
.
data
.
toString
();
final
bool
isCompute
=
!
Constant
.
isDriverTest
&&
data
.
length
>
10
*
1024
;
final
Map
<
String
,
dynamic
>
map
=
isCompute
?
await
compute
(
parseData
,
data
)
:
parseData
(
data
);
return
BaseEntity
<
T
>.
fromJson
(
map
);
}
catch
(
e
)
{
debugPrint
(
e
.
toString
());
return
BaseEntity
<
T
>(
ExceptionHandle
.
parse_error
,
'数据解析错误!'
,
null
);
}
}
Options
_checkOptions
(
String
method
,
Options
?
options
)
{
options
??=
Options
();
options
.
method
=
method
;
...
...
@@ -178,6 +208,41 @@ class DioUtils {
}
/// 统一处理(onSuccess返回T对象,onSuccessList返回 List<T>)
void
asyncUploadFile
<
T
>(
Method
method
,
String
url
,
{
NetSuccessCallback
<
T
?>?
onSuccess
,
NetErrorCallback
?
onError
,
Object
?
params
,
Map
<
String
,
dynamic
>?
queryParameters
,
CancelToken
?
cancelToken
,
ProgressCallback
?
progressCallback
,
Options
?
options
,
})
{
Stream
.
fromFuture
(
_upload
<
T
>(
method
.
value
,
url
,
data:
params
,
queryParameters:
queryParameters
,
options:
options
,
cancelToken:
cancelToken
,
progressCallback:
progressCallback
,
)).
asBroadcastStream
().
listen
((
result
)
{
if
(
result
.
code
==
0
)
{
if
(
onSuccess
!=
null
)
{
onSuccess
(
result
.
data
);
}
}
else
{
_onError
(
result
.
code
,
result
.
message
,
onError
);
}
},
onError:
(
dynamic
e
)
{
_cancelLogPrint
(
e
,
url
);
final
NetError
error
=
ExceptionHandle
.
handleException
(
e
);
_onError
(
error
.
code
,
error
.
msg
,
onError
);
});
}
/// 统一处理(onSuccess返回T对象,onSuccessList返回 List<T>)
void
asyncRequestNetwork
<
T
>(
Method
method
,
String
url
,
{
...
...
lib/poem/page/poem_publish.dart
View file @
9239911
...
...
@@ -14,6 +14,7 @@ import 'package:Parlando/routers/routers.dart';
import
'package:Parlando/widgets/my_app_bar.dart'
;
import
'package:Parlando/extension/int_extension.dart'
;
import
'package:getwidget/getwidget.dart'
;
import
'package:path_provider/path_provider.dart'
;
import
'../poem_router.dart'
;
...
...
@@ -36,13 +37,14 @@ class PoemPublish extends StatefulWidget {
class
PoemPublishState
extends
State
<
PoemPublish
>
{
bool
isPublishing
=
false
;
bool
isUploading
=
false
;
String
_langSortName
=
"普通话"
;
int
_langSortId
=
1
;
//TODO 传入服务器的口音ID
String
_address
=
'我在此地'
;
String
_longitude
=
""
;
String
_latitude
=
""
;
final
LangSortProvider
_provider
=
LangSortProvider
();
final
ValueNotifier
<
double
>
_counter
=
ValueNotifier
<
double
>(
0.0
);
final
TextEditingController
_msgController
=
TextEditingController
();
@override
...
...
@@ -52,8 +54,9 @@ class PoemPublishState extends State<PoemPublish> {
@override
void
dispose
()
{
sup
er
.
dispose
();
_count
er
.
dispose
();
_provider
.
dispose
();
super
.
dispose
();
}
@override
...
...
@@ -203,6 +206,16 @@ class PoemPublishState extends State<PoemPublish> {
color:
Colors
.
black54
,
fontSize:
15
.
px
),
),
),
Gaps
.
vGap10
,
isUploading
?
Padding
(
padding:
const
EdgeInsets
.
all
(
20
),
child:
ValueListenableBuilder
<
double
>(
builder:
_buildWithValue
,
valueListenable:
_counter
,
),
)
:
Container
(),
],
),
),
...
...
@@ -222,6 +235,21 @@ class PoemPublishState extends State<PoemPublish> {
);
}
Widget
_buildWithValue
(
BuildContext
context
,
double
value
,
Widget
?
child
)
{
return
GFProgressBar
(
percentage:
value
,
lineHeight:
10
,
alignment:
MainAxisAlignment
.
spaceBetween
,
backgroundColor:
Colors
.
black26
,
progressBarColor:
GFColors
.
INFO
,
child:
Text
(
"
${(value * 100).toStringAsFixed(1)}
%"
,
textAlign:
TextAlign
.
end
,
style:
const
TextStyle
(
fontSize:
8
,
color:
Colors
.
white
),
),
);
}
Future
<
dynamic
>
_getUploadVideo
()
async
{
final
directory
=
await
getApplicationDocumentsDirectory
();
dynamic
video
=
await
MultipartFile
.
fromFile
(
...
...
@@ -237,6 +265,7 @@ class PoemPublishState extends State<PoemPublish> {
}
isPublishing
=
true
;
isUploading
=
true
;
setState
(()
{});
_getUploadVideo
().
then
((
value
)
{
...
...
@@ -244,14 +273,17 @@ class PoemPublishState extends State<PoemPublish> {
"video"
:
value
,
};
FormData
formData
=
FormData
.
fromMap
(
map
);
DioUtils
.
instance
.
async
RequestNetwork
<
UploadEntity
>(
DioUtils
.
instance
.
async
UploadFile
<
UploadEntity
>(
Method
.
post
,
HttpApi
.
uploadVideo
,
params:
formData
,
progressCallback:
(
int
count
,
int
data
)
{
_counter
.
value
=
count
/
data
;
},
onSuccess:
(
data
)
{
String
path
=
data
!.
data
!.
relativePath
!;
String
videoId
=
'
${widget.id}
'
;
isUploading
=
false
;
Map
<
String
,
String
>
params
=
<
String
,
String
>{
"item_id"
:
videoId
,
"item_url"
:
path
,
...
...
lib/poem/page/select_address_page.dart
View file @
9239911
...
...
@@ -9,10 +9,10 @@ class AddressSelectPage extends StatefulWidget {
const
AddressSelectPage
({
Key
?
key
})
:
super
(
key:
key
);
@override
_AddressSelectPageState
createState
()
=>
_
AddressSelectPageState
();
AddressSelectPageState
createState
()
=>
AddressSelectPageState
();
}
class
_
AddressSelectPageState
extends
State
<
AddressSelectPage
>
{
class
AddressSelectPageState
extends
State
<
AddressSelectPage
>
{
List
<
PoiSearch
>
_list
=
[];
int
_index
=
0
;
final
ScrollController
_controller
=
ScrollController
();
...
...
pubspec.yaml
View file @
9239911
...
...
@@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version
:
1.0.0+
5
version
:
1.0.0+
6
environment
:
sdk
:
"
>=2.16.2
<3.0.0"
...
...
Please
register
or
login
to post a comment