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-01 10:43:40 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
174cc7a8b5e0ea1d9ed0c34991332151c315b568
174cc7a8
1 parent
2d16dbbf
重构首页
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
130 additions
and
40 deletions
lib/generated/json/base/json_convert_content.dart
lib/generated/json/home_entity.g.dart
lib/generated/json/membership_entity.g.dart
lib/generated/json/order_entity.g.dart
lib/generated/json/pay_entity.g.dart
lib/home/home_page.dart
lib/home/models/home_entity.dart
lib/poem/components/video_slides.dart
lib/generated/json/base/json_convert_content.dart
View file @
174cc7a
...
...
@@ -3,7 +3,7 @@
// ignore_for_file: prefer_single_quotes
// This file is automatically generated. DO NOT EDIT, all your changes would be lost.
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
show
debugPrint
;
import
'package:Parlando/account/models/my_videos_entity.dart'
;
import
'package:Parlando/account/models/upload_avatar_entity.dart'
;
import
'package:Parlando/account/models/user_entity.dart'
;
...
...
@@ -22,7 +22,6 @@ import 'package:Parlando/poem/models/search_entity.dart';
import
'package:Parlando/timeline/models/friend_entity.dart'
;
JsonConvert
jsonConvert
=
JsonConvert
();
typedef
JsonConvertFunction
<
T
>
=
T
Function
(
Map
<
String
,
dynamic
>
json
);
class
JsonConvert
{
...
...
lib/generated/json/home_entity.g.dart
View file @
174cc7a
...
...
@@ -75,22 +75,30 @@ HomeData $HomeDataFromJson(Map<String, dynamic> json) {
if
(
bgm
!=
null
)
{
homeData
.
bgm
=
bgm
;
}
final
String
?
praise
=
jsonConvert
.
convert
<
String
>(
json
[
'praise'
]);
final
int
?
praise
=
jsonConvert
.
convert
<
int
>(
json
[
'praise'
]);
if
(
praise
!=
null
)
{
homeData
.
praise
=
praise
;
}
final
String
?
view
=
jsonConvert
.
convert
<
String
>(
json
[
'view'
]);
final
int
?
view
=
jsonConvert
.
convert
<
int
>(
json
[
'view'
]);
if
(
view
!=
null
)
{
homeData
.
view
=
view
;
}
final
String
?
collect
=
jsonConvert
.
convert
<
String
>(
json
[
'collect'
]);
final
int
?
collect
=
jsonConvert
.
convert
<
int
>(
json
[
'collect'
]);
if
(
collect
!=
null
)
{
homeData
.
collect
=
collect
;
}
final
String
?
share
=
jsonConvert
.
convert
<
String
>(
json
[
'share'
]);
final
int
?
share
=
jsonConvert
.
convert
<
int
>(
json
[
'share'
]);
if
(
share
!=
null
)
{
homeData
.
share
=
share
;
}
final
bool
?
isPraise
=
jsonConvert
.
convert
<
bool
>(
json
[
'is_praise'
]);
if
(
isPraise
!=
null
)
{
homeData
.
isPraise
=
isPraise
;
}
final
bool
?
isCollect
=
jsonConvert
.
convert
<
bool
>(
json
[
'is_collect'
]);
if
(
isCollect
!=
null
)
{
homeData
.
isCollect
=
isCollect
;
}
return
homeData
;
}
...
...
@@ -109,6 +117,8 @@ Map<String, dynamic> $HomeDataToJson(HomeData entity) {
data
[
'view'
]
=
entity
.
view
;
data
[
'collect'
]
=
entity
.
collect
;
data
[
'share'
]
=
entity
.
share
;
data
[
'is_praise'
]
=
entity
.
isPraise
;
data
[
'is_collect'
]
=
entity
.
isCollect
;
return
data
;
}
...
...
lib/generated/json/membership_entity.g.dart
View file @
174cc7a
...
...
@@ -217,4 +217,4 @@ MembershipError $MembershipErrorFromJson(Map<String, dynamic> json) {
Map
<
String
,
dynamic
>
$MembershipErrorToJson
(
MembershipError
entity
)
{
final
Map
<
String
,
dynamic
>
data
=
<
String
,
dynamic
>{};
return
data
;
}
}
\ No newline at end of file
...
...
lib/generated/json/order_entity.g.dart
View file @
174cc7a
...
...
@@ -59,4 +59,4 @@ OrderError $OrderErrorFromJson(Map<String, dynamic> json) {
Map
<
String
,
dynamic
>
$OrderErrorToJson
(
OrderError
entity
)
{
final
Map
<
String
,
dynamic
>
data
=
<
String
,
dynamic
>{};
return
data
;
}
}
\ No newline at end of file
...
...
lib/generated/json/pay_entity.g.dart
View file @
174cc7a
...
...
@@ -203,4 +203,4 @@ PayError $PayErrorFromJson(Map<String, dynamic> json) {
Map
<
String
,
dynamic
>
$PayErrorToJson
(
PayError
entity
)
{
final
Map
<
String
,
dynamic
>
data
=
<
String
,
dynamic
>{};
return
data
;
}
}
\ No newline at end of file
...
...
lib/home/home_page.dart
View file @
174cc7a
...
...
@@ -64,7 +64,6 @@ class HomeState extends State<Home> with WidgetsBindingObserver {
//设置pageView 滑动监听
_controller
.
addListener
(()
{
if
(
_controller
.
position
.
pixels
==
_controller
.
position
.
maxScrollExtent
)
{
print
(
'滑动到了最底部'
);
_getMore
();
}
});
...
...
@@ -111,9 +110,12 @@ class HomeState extends State<Home> with WidgetsBindingObserver {
videos
.
clear
();
for
(
HomeData
data
in
data
!.
data
!)
{
videos
.
add
(
VideoSlides
(
videoId:
data
.
id
!,
poemId:
data
.
poemId
!,
poemType:
data
.
type
!,
url:
data
.
url
!,
isCollect:
data
.
isCollect
!,
isPraise:
data
.
isPraise
!,
));
}
setState
(()
{});
...
...
@@ -140,9 +142,12 @@ class HomeState extends State<Home> with WidgetsBindingObserver {
for
(
HomeData
data
in
data
!.
data
!)
{
videos
.
add
(
VideoSlides
(
videoId:
data
.
id
!,
poemId:
data
.
poemId
!,
poemType:
data
.
type
!,
url:
data
.
url
!,
isCollect:
data
.
isCollect
!,
isPraise:
data
.
isPraise
!,
));
}
setState
(()
{});
...
...
lib/home/models/home_entity.dart
View file @
174cc7a
import
'dart:convert'
;
import
'package:Parlando/generated/json/base/json_field.dart'
;
import
'package:Parlando/generated/json/home_entity.g.dart'
;
import
'dart:convert'
;
@JsonSerializable
()
class
HomeEntity
{
...
...
@@ -37,10 +37,14 @@ class HomeData {
@JSONField
(
name:
"temp_id"
)
int
?
tempId
;
String
?
bgm
;
String
?
praise
;
String
?
view
;
String
?
collect
;
String
?
share
;
int
?
praise
;
int
?
view
;
int
?
collect
;
int
?
share
;
@JSONField
(
name:
"is_praise"
)
bool
?
isPraise
;
@JSONField
(
name:
"is_collect"
)
bool
?
isCollect
;
HomeData
();
...
...
lib/poem/components/video_slides.dart
View file @
174cc7a
import
'package:dio/dio.dart'
;
import
'package:flutter/material.dart'
;
import
'package:getwidget/getwidget.dart'
;
import
'package:path_provider/path_provider.dart'
;
import
'package:share_plus/share_plus.dart'
;
import
'../../net/dio_utils.dart'
;
import
'../../net/http_api.dart'
;
import
'../theme/tik_video_player.dart'
;
class
VideoSlides
extends
StatefulWidget
{
...
...
@@ -11,7 +15,9 @@ class VideoSlides extends StatefulWidget {
required
this
.
url
,
this
.
isPraise
=
false
,
this
.
isCollect
=
false
,
required
this
.
videoId
,
})
:
super
(
key:
key
);
final
int
videoId
;
final
int
poemId
;
final
int
poemType
;
final
String
url
;
...
...
@@ -24,6 +30,15 @@ class VideoSlides extends StatefulWidget {
class
VideoSlidesState
extends
State
<
VideoSlides
>
{
bool
isSharing
=
false
;
bool
isPraise
=
false
;
bool
isCollect
=
false
;
@override
void
initState
()
{
super
.
initState
();
isPraise
=
widget
.
isPraise
;
isCollect
=
widget
.
isCollect
;
}
@override
Widget
build
(
BuildContext
context
)
{
...
...
@@ -78,7 +93,7 @@ class VideoSlidesState extends State<VideoSlides> {
children:
[
Padding
(
padding:
const
EdgeInsetsDirectional
.
fromSTEB
(
0
,
10
,
0
,
0
),
const
EdgeInsetsDirectional
.
fromSTEB
(
0
,
10
,
0
,
0
),
child:
Row
(
mainAxisSize:
MainAxisSize
.
max
,
mainAxisAlignment:
MainAxisAlignment
.
center
,
...
...
@@ -90,17 +105,35 @@ class VideoSlidesState extends State<VideoSlides> {
Padding
(
padding:
const
EdgeInsetsDirectional
.
fromSTEB
(
0
,
20
,
0
,
0
),
child:
Container
(
width:
40
,
height:
40
,
decoration:
const
BoxDecoration
(
color:
Color
(
0x69EEEEEE
),
shape:
BoxShape
.
circle
,
),
child:
const
Icon
(
Icons
.
favorite_rounded
,
color:
Colors
.
white
,
size:
20
,
child:
InkWell
(
onTap:
()
{
isPraise
=
isPraise
==
false
?
true
:
false
;
setState
(()
{});
String
url
=
'
${HttpApi.praise}
/
${widget.videoId}
'
;
DioUtils
.
instance
.
asyncRequestNetwork
(
Method
.
post
,
url
,
params:
[],
onSuccess:
(
data
)
{},
onError:
(
code
,
msg
)
{},
);
},
child:
Container
(
width:
40
,
height:
40
,
decoration:
const
BoxDecoration
(
color:
Color
(
0x69EEEEEE
),
shape:
BoxShape
.
circle
,
),
child:
Icon
(
Icons
.
favorite_rounded
,
color:
isPraise
?
Colors
.
red
:
Colors
.
white
,
size:
20
,
),
),
),
),
...
...
@@ -111,7 +144,7 @@ class VideoSlidesState extends State<VideoSlides> {
),
Padding
(
padding:
const
EdgeInsetsDirectional
.
fromSTEB
(
0
,
10
,
0
,
0
),
const
EdgeInsetsDirectional
.
fromSTEB
(
0
,
10
,
0
,
0
),
child:
Row
(
mainAxisSize:
MainAxisSize
.
max
,
mainAxisAlignment:
MainAxisAlignment
.
center
,
...
...
@@ -124,7 +157,20 @@ class VideoSlidesState extends State<VideoSlides> {
padding:
const
EdgeInsetsDirectional
.
fromSTEB
(
0
,
20
,
0
,
0
),
child:
InkWell
(
onTap:
()
async
{},
onTap:
()
async
{
isCollect
=
isCollect
==
false
?
true
:
false
;
setState
(()
{});
String
url
=
'
${HttpApi.collect}
/
${widget.videoId}
'
;
DioUtils
.
instance
.
asyncRequestNetwork
(
Method
.
post
,
url
,
params:
[],
onSuccess:
(
data
)
{},
onError:
(
code
,
msg
)
{},
);
},
child:
Container
(
width:
40
,
height:
40
,
...
...
@@ -132,9 +178,11 @@ class VideoSlidesState extends State<VideoSlides> {
color:
Color
(
0x69EEEEEE
),
shape:
BoxShape
.
circle
,
),
child:
const
Icon
(
child:
Icon
(
Icons
.
star
,
color:
Colors
.
white
,
color:
isCollect
?
Colors
.
red
:
Colors
.
white
,
size:
20
,
),
),
...
...
@@ -147,7 +195,7 @@ class VideoSlidesState extends State<VideoSlides> {
),
Padding
(
padding:
const
EdgeInsetsDirectional
.
fromSTEB
(
0
,
10
,
0
,
0
),
const
EdgeInsetsDirectional
.
fromSTEB
(
0
,
10
,
0
,
0
),
child:
Row
(
mainAxisSize:
MainAxisSize
.
max
,
mainAxisAlignment:
MainAxisAlignment
.
center
,
...
...
@@ -163,11 +211,10 @@ class VideoSlidesState extends State<VideoSlides> {
onTap:
()
async
{
isSharing
=
true
;
setState
(()
{});
Future
.
delayed
(
const
Duration
(
seconds:
3
),
()
async
{
setState
(()
=>
isSharing
=
false
);
await
Share
.
share
(
'一言以世界 临境不蹉跎'
);
});
await
downVideo
(
widget
.
url
);
isSharing
=
false
;
await
Share
.
shareFiles
([
tempVideoPath
],
text:
'一言以世界 临境不蹉跎'
);
},
child:
Container
(
width:
40
,
...
...
@@ -177,9 +224,10 @@ class VideoSlidesState extends State<VideoSlides> {
shape:
BoxShape
.
circle
,
),
child:
isSharing
?
const
GFLoader
(
type:
GFLoaderType
.
ios
,
)
?
GFProgressBar
(
percentage:
currentProgress
,
backgroundColor:
Colors
.
black26
,
progressBarColor:
GFColors
.
DANGER
)
:
const
Icon
(
Icons
.
share_rounded
,
color:
Colors
.
white
,
...
...
@@ -203,4 +251,28 @@ class VideoSlidesState extends State<VideoSlides> {
],
);
}
Future
<
String
>
getPhoneLocalPath
()
async
{
final
directory
=
Theme
.
of
(
context
).
platform
==
TargetPlatform
.
android
?
await
getExternalStorageDirectory
()
:
await
getApplicationDocumentsDirectory
();
return
directory
!.
path
;
}
double
currentProgress
=
0.0
;
String
tempVideoPath
=
""
;
Future
<
void
>
downVideo
(
String
url
)
async
{
String
savePath
=
await
getPhoneLocalPath
();
String
appName
=
"my_parlando.mp4"
;
Dio
dio
=
Dio
();
tempVideoPath
=
"
$savePath$appName
"
;
Response
response
=
await
dio
.
download
(
url
,
tempVideoPath
,
onReceiveProgress:
(
received
,
total
)
{
if
(
total
!=
-
1
)
{
currentProgress
=
received
/
total
;
setState
(()
{});
}
});
}
}
...
...
Please
register
or
login
to post a comment