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-06-30 22:46:37 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
53fc14c7e34703d3eed797e04c55f5d854123fb7
53fc14c7
1 parent
48ef0eaa
temp
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
88 additions
and
148 deletions
android/app/src/main/AndroidManifest.xml
lib/poem/page/poem_page.dart
lib/tiktok/widgets/tiktok_video_button_column.dart
lib/widgets/bars/home_types_bar.dart
pubspec.lock
pubspec.yaml
android/app/src/main/AndroidManifest.xml
View file @
53fc14c
...
...
@@ -41,18 +41,6 @@
android:name=
"com.yalantis.ucrop.UCropActivity"
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Light.NoActionBar"
/>
<activity
android:name=
"com.braintreepayments.api.BraintreeBrowserSwitchActivity"
android:exported=
"true"
android:launchMode=
"singleTask"
>
<intent-filter>
<action
android:name=
"android.intent.action.VIEW"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<category
android:name=
"android.intent.category.BROWSABLE"
/>
</intent-filter>
</activity>
<meta-data
android:name=
"flutterEmbedding"
...
...
@@ -63,17 +51,6 @@
<meta-data
android:name=
"com.facebook.sdk.ClientToken"
android:value=
"@string/facebook_client_token"
/>
<provider
android:name=
"androidx.core.content.FileProvider"
android:authorities=
"${applicationId}.com.shekarmudaliyar.social_share"
android:exported=
"false"
android:grantUriPermissions=
"true"
tools:replace=
"android:authorities"
>
<meta-data
android:name=
"android.support.FILE_PROVIDER_PATHS"
android:resource=
"@xml/filepaths"
/>
</provider>
</application>
<queries>
...
...
@@ -87,4 +64,8 @@
<uses-permission
android:name=
"com.android.vending.BILLING"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<uses-permission
android:name=
"android.permission.RECORD_AUDIO"
/>
</manifest>
...
...
lib/poem/page/poem_page.dart
View file @
53fc14c
import
'dart:async'
;
import
'dart:io'
;
import
'dart:typed_data'
;
import
'package:Parlando/account/account_router.dart'
;
import
'package:Parlando/events/trans_event.dart'
;
import
'package:Parlando/home/models/home_entity.dart'
;
...
...
@@ -10,6 +7,7 @@ import 'package:Parlando/net/dio_utils.dart';
import
'package:Parlando/net/http_api.dart'
;
import
'package:Parlando/util/toast_utils.dart'
;
import
'package:animated_radial_menu/animated_radial_menu.dart'
;
import
'package:dio/dio.dart'
;
import
'package:flutter/material.dart'
;
import
'package:Parlando/category/category_router.dart'
;
import
'package:Parlando/poem/poem_router.dart'
;
...
...
@@ -25,12 +23,12 @@ import 'package:Parlando/tiktok/widgets/tiktok_video_button_column.dart';
import
'package:Parlando/tiktok/widgets/tiktok_video_poem.dart'
;
import
'package:Parlando/widgets/bars/home_types_bar.dart'
;
import
'package:Parlando/widgets/my_app_bar.dart'
;
import
'package:flutter
/service
s.dart'
;
import
'package:flutter
_easy_permission/easy_permission
s.dart'
;
import
'package:getwidget/getwidget.dart'
;
import
'package:image_gallery_saver/image_gallery_saver.dart'
;
import
'package:path_provider/path_provider.dart'
;
import
'package:provider/provider.dart'
;
import
'package:screenshot/screenshot.dart'
;
import
'package:social_share/social_share.dart'
;
import
'package:share_plus/share_plus.dart'
;
import
'package:video_player/video_player.dart'
;
import
'poem_detail.dart'
;
...
...
@@ -60,6 +58,22 @@ class PoemPageState extends State<PoemPage> with WidgetsBindingObserver {
bool
isFav
=
false
;
bool
isPraise
=
false
;
bool
isSharing
=
false
;
static
const
permissions
=
[
Permissions
.
CAMERA
,
Permissions
.
READ_EXTERNAL_STORAGE
,
Permissions
.
RECORD_AUDIO
,
Permissions
.
WRITE_EXTERNAL_STORAGE
];
static
const
permissionGroup
=
[
PermissionGroup
.
Camera
,
PermissionGroup
.
Camera
,
PermissionGroup
.
Microphone
];
late
FlutterEasyPermission
_easyPermission
;
@override
void
didChangeAppLifecycleState
(
AppLifecycleState
state
)
async
{
...
...
@@ -73,12 +87,41 @@ class PoemPageState extends State<PoemPage> with WidgetsBindingObserver {
WidgetsBinding
.
instance
.
removeObserver
(
this
);
_videoListController
.
currentPlayer
.
pause
();
bus
.
cancel
();
_easyPermission
.
dispose
();
super
.
dispose
();
}
@override
void
initState
()
{
WidgetsBinding
.
instance
.
addObserver
(
this
);
FlutterEasyPermission
.
has
(
perms:
permissions
,
permsGroup:
permissionGroup
)
.
then
((
value
)
{
if
(
value
)
{
FlutterEasyPermission
.
request
(
perms:
permissions
,
permsGroup:
permissionGroup
,
rationale:
"需要使用如下权限"
);
}
});
_easyPermission
=
FlutterEasyPermission
()
..
addPermissionCallback
(
onGranted:
(
requestCode
,
perms
,
perm
)
{
debugPrint
(
"android获得授权:
$perms
"
);
debugPrint
(
"iOS获得授权:
$perm
"
);
},
onDenied:
(
requestCode
,
perms
,
perm
,
isPermanent
)
{
if
(
isPermanent
)
{
FlutterEasyPermission
.
showAppSettingsDialog
(
title:
"Camera"
);
}
else
{
debugPrint
(
"android授权失败:
$perms
"
);
debugPrint
(
"iOS授权失败:
$perm
"
);
}
},
onSettingsReturned:
()
{
FlutterEasyPermission
.
has
(
perms:
permissions
,
permsGroup:
[]).
then
(
(
value
)
=>
value
?
debugPrint
(
"已获得授权:
$permissions
"
)
:
debugPrint
(
"未获得授权:
$permissions
"
));
});
isLoading
=
true
;
DioUtils
.
instance
.
asyncRequestNetwork
<
HomeEntity
>(
Method
.
get
,
...
...
@@ -165,7 +208,6 @@ class PoemPageState extends State<PoemPage> with WidgetsBindingObserver {
Widget
?
currentPage
;
double
a
=
MediaQuery
.
of
(
context
).
size
.
aspectRatio
;
bool
hasBottomPadding
=
a
<
0.55
;
ScreenshotController
screenshotController
=
ScreenshotController
();
var
detailPage
=
PoemDetailPage
(
onPop:
()
{
tkController
.
animateToMiddle
();
...
...
@@ -270,7 +312,21 @@ class PoemPageState extends State<PoemPage> with WidgetsBindingObserver {
);
},
onShare:
()
async
{
showShareView
(
context
);
isSharing
=
true
;
setState
(()
{});
var
appDocDir
=
await
getTemporaryDirectory
();
String
savePath
=
"
${appDocDir.path}
/temp.mp4"
;
await
Dio
().
download
(
"http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"
,
savePath
);
final
result
=
await
ImageGallerySaver
.
saveFile
(
savePath
);
print
(
result
);
isSharing
=
false
;
setState
(()
{});
await
Share
.
shareFiles
(
[
"/media/external/video/media/79"
],
text:
'一言一世界 临境不蹉跎'
);
},
);
Widget
poem
=
TikTokVidePoem
(
...
...
@@ -400,106 +456,6 @@ class PoemPageState extends State<PoemPage> with WidgetsBindingObserver {
);
}
static
showShareView
(
BuildContext
context
)
{
final
List
buttonTitles
=
[
"Twitter"
,
"Facebook"
,
];
final
List
buttonImages
=
[
"jiguang_socialize_twitter.png"
,
"jiguang_socialize_facebook.png"
,
];
showModalBottomSheet
(
context:
context
,
backgroundColor:
Colors
.
white
.
withAlpha
(
0
),
elevation:
2
,
builder:
(
BuildContext
context
)
{
return
ClipRRect
(
borderRadius:
const
BorderRadius
.
only
(
topLeft:
Radius
.
circular
(
10
),
topRight:
Radius
.
circular
(
10
)),
child:
Container
(
width:
double
.
infinity
,
height:
180
,
color:
const
Color
.
fromRGBO
(
255
,
255
,
255
,
1
),
child:
Stack
(
children:
[
Padding
(
padding:
const
EdgeInsets
.
only
(
top:
14
,
left:
15
,
right:
15
),
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
children:
const
[
Text
(
"分享到"
,
style:
TextStyle
(
fontSize:
20
,
fontWeight:
FontWeight
.
bold
,
color:
Color
.
fromRGBO
(
51
,
51
,
51
,
1
)),
),
],
)),
Padding
(
padding:
const
EdgeInsets
.
only
(
left:
0
,
right:
0
,
top:
0
),
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceEvenly
,
children:
List
.
generate
(
buttonTitles
.
length
,
(
index
)
{
return
Container
(
child:
buttonWidget
(
context
,
buttonTitles
[
index
],
buttonImages
[
index
],
index
),
);
}).
toList
(),
),
)
],
),
),
);
});
}
static
buttonWidget
(
BuildContext
context
,
String
title
,
String
imageName
,
int
index
)
{
return
GestureDetector
(
onTap:
()
{
switch
(
index
)
{
case
0
:
dismiss
(
context
);
SocialShare
.
shareTwitter
(
"This is Social Share twitter example"
,
hashtags:
[
"hello"
,
"world"
,
"foo"
,
"bar"
],
url:
"https://google.com/#/hello"
,
trailingText:
"
\n
hello"
,
).
then
((
data
)
{
print
(
data
);
});
break
;
case
1
:
//Facebook
print
(
"朋友圈"
);
dismiss
(
context
);
break
;
default
:
break
;
}
},
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
Image
.
asset
(
"assets/images/share/
$imageName
"
,
height:
64
,
width:
64
,
),
Padding
(
padding:
const
EdgeInsets
.
only
(
top:
5
),
child:
Text
(
title
,
style:
const
TextStyle
(
fontSize:
12
,
color:
Color
.
fromRGBO
(
51
,
51
,
51
,
1
))),
)
],
),
);
}
static
dismiss
(
BuildContext
context
)
{
Navigator
.
pop
(
context
);
}
...
...
lib/tiktok/widgets/tiktok_video_button_column.dart
View file @
53fc14c
import
'package:flutter/material.dart'
;
import
'package:Parlando/tiktok/style/style.dart'
;
import
'package:getwidget/getwidget.dart'
;
import
'package:tapped/tapped.dart'
;
import
'package:Parlando/extension/int_extension.dart'
;
...
...
@@ -8,6 +9,7 @@ class TikTokButtonColumn extends StatelessWidget {
final
double
?
bottomPadding
;
final
bool
isPraise
;
final
bool
isCollect
;
final
bool
isSharing
;
final
Function
?
onPraise
;
final
Function
?
onCollect
;
final
Function
?
onShare
;
...
...
@@ -22,6 +24,7 @@ class TikTokButtonColumn extends StatelessWidget {
this
.
isPraise
=
false
,
this
.
isCollect
=
false
,
this
.
onAvatar
,
this
.
isSharing
=
false
,
})
:
super
(
key:
key
);
@override
...
...
@@ -44,11 +47,13 @@ class TikTokButtonColumn extends StatelessWidget {
onCollect:
onCollect
,
isCollect:
isCollect
,
),
_IconButton
(
icon:
IconToText
(
Icons
.
share
,
size:
20
.
px
),
text:
'分享'
,
onTap:
onShare
,
),
isSharing
?
const
GFLoader
()
:
_IconButton
(
icon:
IconToText
(
Icons
.
share
,
size:
20
.
px
),
text:
'分享'
,
onTap:
onShare
,
),
],
),
);
...
...
lib/widgets/bars/home_types_bar.dart
View file @
53fc14c
...
...
@@ -28,16 +28,13 @@ class HomeTypesHeader extends StatelessWidget {
//交叉轴的布局方式,对于column来说就是水平方向的布局方式
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
<
Widget
>[
SizedBox
(
width:
60.0
,
child:
TextButton
(
onPressed:
()
=>
funcLeft
!(),
child:
Text
(
"临境"
,
style:
TextStyle
(
color:
color
??
Colors
.
white
,
fontSize:
15
.
px
,
),
TextButton
(
onPressed:
()
=>
funcLeft
!(),
child:
Text
(
"临境"
,
style:
TextStyle
(
color:
color
??
Colors
.
white
,
fontSize:
15
.
px
,
),
),
),
...
...
pubspec.lock
View file @
53fc14c
This diff is collapsed. Click to expand it.
pubspec.yaml
View file @
53fc14c
...
...
@@ -119,9 +119,10 @@ dependencies:
flutter_inapp_purchase
:
^5.3.0
jpush_flutter
:
^2.2.9
s
ocial_share
:
^2.2.1
screenshot
:
^1.2.3
s
hare_plus
:
^4.0.10
image_gallery_saver
:
^1.7.1
flutter_easy_permission
:
^1.1.2
dependency_overrides
:
decimal
:
1.5.0
...
...
Please
register
or
login
to post a comment