add video trim support

master
laiiihz 5 years ago
parent c668b9f533
commit 395ccabe7a

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

@ -4,6 +4,9 @@ import 'package:flutter/material.dart';
import 'package:recook/constants/constants.dart';
import 'package:recook/widgets/custom_app_bar.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 {
final File file;
@ -14,9 +17,22 @@ class CropVideoPage extends StatefulWidget {
}
class _CropVideoPageState extends State<CropVideoPage> {
Trimmer _trimmer = Trimmer();
double _startValue = 0.0;
double _endValue = 0.0;
bool _isPlaying = false;
bool _loading = true;
@override
void initState() {
super.initState();
_trimmer.loadVideo(videoFile: widget.file).then((_) {
setState(() {
_loading = false;
});
});
}
@override
@ -24,6 +40,7 @@ class _CropVideoPageState extends State<CropVideoPage> {
return Scaffold(
backgroundColor: Color(0xFF232323),
appBar: CustomAppBar(
elevation: 0,
appBackground: Color(0xFF232323),
leading: RecookBackButton(white: true),
actions: [
@ -44,6 +61,34 @@ class _CropVideoPageState extends State<CropVideoPage> {
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: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/user/order/order_return_status_page.dart';
import 'package:recook/utils/custom_route.dart';
import 'package:recook/widgets/recook_back_button.dart';
import 'package:recook/widgets/recook_indicator.dart';
import 'package:recook/widgets/sc_tile.dart';
class LiveHostCenterPage extends StatefulWidget {
LiveHostCenterPage({Key key}) : super(key: key);
@ -75,7 +74,7 @@ class _LiveHostCenterPageState extends State<LiveHostCenterPage>
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'吕贝贝',
UserManager.instance.user.info.nickname,
style: TextStyle(
color: Color(0xFF333333),
fontSize: rSP(18),

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:recook/constants/api.dart';
import 'package:recook/constants/constants.dart';
import 'package:recook/constants/styles.dart';
import 'package:recook/manager/user_manager.dart';
@ -70,7 +71,17 @@ class _UserHomePageState extends State<UserHomePage>
children: [
Row(
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)),
Expanded(
child: Text(

@ -309,6 +309,20 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
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:
dependency: transitive
description:
@ -342,6 +356,13 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
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:
dependency: "direct main"
description:
@ -1066,6 +1087,20 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
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:
dependency: transitive
description:

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

Loading…
Cancel
Save