add video trim support

master
laiiihz 5 years ago
parent c668b9f533
commit 395ccabe7a

@ -61,7 +61,7 @@ android {
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.akuhome.recook" applicationId "com.akuhome.recook"
minSdkVersion 21 minSdkVersion 24
targetSdkVersion 28 targetSdkVersion 28
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName

@ -4,6 +4,9 @@ import 'package:flutter/material.dart';
import 'package:recook/constants/constants.dart'; import 'package:recook/constants/constants.dart';
import 'package:recook/widgets/custom_app_bar.dart'; import 'package:recook/widgets/custom_app_bar.dart';
import 'package:recook/widgets/recook_back_button.dart'; import 'package:recook/widgets/recook_back_button.dart';
import 'package:video_trimmer/trim_editor.dart';
import 'package:video_trimmer/video_trimmer.dart';
import 'package:video_trimmer/video_viewer.dart';
class CropVideoPage extends StatefulWidget { class CropVideoPage extends StatefulWidget {
final File file; final File file;
@ -14,9 +17,22 @@ class CropVideoPage extends StatefulWidget {
} }
class _CropVideoPageState extends State<CropVideoPage> { class _CropVideoPageState extends State<CropVideoPage> {
Trimmer _trimmer = Trimmer();
double _startValue = 0.0;
double _endValue = 0.0;
bool _isPlaying = false;
bool _loading = true;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_trimmer.loadVideo(videoFile: widget.file).then((_) {
setState(() {
_loading = false;
});
});
} }
@override @override
@ -24,6 +40,7 @@ class _CropVideoPageState extends State<CropVideoPage> {
return Scaffold( return Scaffold(
backgroundColor: Color(0xFF232323), backgroundColor: Color(0xFF232323),
appBar: CustomAppBar( appBar: CustomAppBar(
elevation: 0,
appBackground: Color(0xFF232323), appBackground: Color(0xFF232323),
leading: RecookBackButton(white: true), leading: RecookBackButton(white: true),
actions: [ actions: [
@ -44,6 +61,34 @@ class _CropVideoPageState extends State<CropVideoPage> {
SizedBox(width: rSize(15)), SizedBox(width: rSize(15)),
], ],
), ),
body: _loading
? Center(child: CircularProgressIndicator())
: Column(
children: [
Expanded(
child: VideoViewer(),
),
Container(
margin: EdgeInsets.only(bottom: rSize(35)),
child: TrimEditor(
viewerWidth: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
viewerHeight: rSize(68),
onChangeStart: (value) {
_startValue = value;
},
onChangeEnd: (value) {
_endValue = value;
},
onChangePlaybackState: (value) {
setState(() {
_isPlaying = value;
});
},
),
),
],
),
); );
} }
} }

@ -1,11 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:recook/constants/header.dart'; import 'package:recook/constants/header.dart';
import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/live/sub_page/data_manager_page.dart'; import 'package:recook/pages/live/sub_page/data_manager_page.dart';
import 'package:recook/pages/user/order/order_return_status_page.dart';
import 'package:recook/utils/custom_route.dart'; import 'package:recook/utils/custom_route.dart';
import 'package:recook/widgets/recook_back_button.dart'; import 'package:recook/widgets/recook_back_button.dart';
import 'package:recook/widgets/recook_indicator.dart'; import 'package:recook/widgets/recook_indicator.dart';
import 'package:recook/widgets/sc_tile.dart';
class LiveHostCenterPage extends StatefulWidget { class LiveHostCenterPage extends StatefulWidget {
LiveHostCenterPage({Key key}) : super(key: key); LiveHostCenterPage({Key key}) : super(key: key);
@ -75,7 +74,7 @@ class _LiveHostCenterPageState extends State<LiveHostCenterPage>
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'吕贝贝', UserManager.instance.user.info.nickname,
style: TextStyle( style: TextStyle(
color: Color(0xFF333333), color: Color(0xFF333333),
fontSize: rSP(18), fontSize: rSP(18),

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:recook/constants/api.dart';
import 'package:recook/constants/constants.dart'; import 'package:recook/constants/constants.dart';
import 'package:recook/constants/styles.dart'; import 'package:recook/constants/styles.dart';
import 'package:recook/manager/user_manager.dart'; import 'package:recook/manager/user_manager.dart';
@ -70,7 +71,17 @@ class _UserHomePageState extends State<UserHomePage>
children: [ children: [
Row( Row(
children: [ children: [
CircleAvatar(radius: rSize(54 / 2.0)), widget.selfFlag
? CircleAvatar(
radius: rSize(54 / 2.0),
backgroundImage: NetworkImage(
Api.getImgUrl(UserManager
.instance.user.info.headImgUrl),
),
)
: CircleAvatar(
radius: rSize(54 / 2.0),
),
SizedBox(width: rSize(10)), SizedBox(width: rSize(10)),
Expanded( Expanded(
child: Text( child: Text(

@ -309,6 +309,20 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "5.2.1" version: "5.2.1"
file_picker:
dependency: transitive
description:
name: file_picker
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.13.3"
file_picker_platform_interface:
dependency: transitive
description:
name: file_picker_platform_interface
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.1"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
@ -342,6 +356,13 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.4.0" version: "1.4.0"
flutter_ffmpeg:
dependency: transitive
description:
name: flutter_ffmpeg
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.10"
flutter_gifimage: flutter_gifimage:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1066,6 +1087,20 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.1.4" version: "0.1.4"
video_thumbnail:
dependency: transitive
description:
name: video_thumbnail
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.2"
video_trimmer:
dependency: "direct main"
description:
name: video_trimmer
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.7"
wakelock: wakelock:
dependency: transitive dependency: transitive
description: description:

@ -185,6 +185,8 @@ dependencies:
camera: ^0.5.8+7 camera: ^0.5.8+7
#工具类库 #工具类库
common_utils: ^1.2.1 common_utils: ^1.2.1
#视频剪辑
video_trimmer: ^0.2.7
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:

Loading…
Cancel
Save