Browse Source

remove option record, choose video

smf_upgrate
Đại Võ 2 years ago
parent
commit
dc83362031
2 changed files with 62 additions and 81 deletions
  1. +17
    -17
      lib/presentation/custom_widgets/camera_helper.dart
  2. +45
    -64
      lib/presentation/custom_widgets/widget_media_picker.dart

+ 17
- 17
lib/presentation/custom_widgets/camera_helper.dart View File

color: Colors.blue, color: Colors.blue,
onPressed: controller != null && controller.value.isInitialized && !controller.value.isRecordingVideo ? onTakePictureButtonPressed : null, onPressed: controller != null && controller.value.isInitialized && !controller.value.isRecordingVideo ? onTakePictureButtonPressed : null,
), ),
IconButton(
icon: const Icon(Icons.videocam, size: 35),
color: Colors.blue,
onPressed: controller != null && controller.value.isInitialized && !controller.value.isRecordingVideo ? onVideoRecordButtonPressed : null,
),
IconButton(
icon: controller != null && controller.value.isRecordingPaused ? Icon(Icons.play_arrow) : Icon(Icons.pause),
color: Colors.blue,
onPressed: controller != null && controller.value.isInitialized && controller.value.isRecordingVideo
? (controller != null && controller.value.isRecordingPaused ? onResumeButtonPressed : onPauseButtonPressed)
: null,
),
IconButton(
icon: const Icon(Icons.stop),
color: Colors.red,
onPressed: controller != null && controller.value.isInitialized && controller.value.isRecordingVideo ? onStopButtonPressed : null,
)
// IconButton(
// icon: const Icon(Icons.videocam, size: 35),
// color: Colors.blue,
// onPressed: controller != null && controller.value.isInitialized && !controller.value.isRecordingVideo ? onVideoRecordButtonPressed : null,
// ),
// IconButton(
// icon: controller != null && controller.value.isRecordingPaused ? Icon(Icons.play_arrow) : Icon(Icons.pause),
// color: Colors.blue,
// onPressed: controller != null && controller.value.isInitialized && controller.value.isRecordingVideo
// ? (controller != null && controller.value.isRecordingPaused ? onResumeButtonPressed : onPauseButtonPressed)
// : null,
// ),
// IconButton(
// icon: const Icon(Icons.stop),
// color: Colors.red,
// onPressed: controller != null && controller.value.isInitialized && controller.value.isRecordingVideo ? onStopButtonPressed : null,
// )
], ],
); );
} }

+ 45
- 64
lib/presentation/custom_widgets/widget_media_picker.dart View File



class WidgetMediaPicker extends StatefulWidget { class WidgetMediaPicker extends StatefulWidget {
final List<Media> currentItems; final List<Media> currentItems;
final Function(List<String> addNewFilePaths, List<String> deleteFilePaths)
onChangeFiles;
final Function(List<String> addNewFilePaths, List<String> deleteFilePaths) onChangeFiles;
WidgetMediaPicker({this.currentItems, @required this.onChangeFiles}); WidgetMediaPicker({this.currentItems, @required this.onChangeFiles});
@override @override
_WidgetMediaPickerState createState() => _WidgetMediaPickerState(); _WidgetMediaPickerState createState() => _WidgetMediaPickerState();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider<MediaHelperBloc>( return BlocProvider<MediaHelperBloc>(
create: (BuildContext contextA) =>
MediaHelperBloc()..add(ChangeListMedia(items: currentItems)),
child: BlocBuilder<MediaHelperBloc, MediaHelperState>(
builder: (contextB, state) {
create: (BuildContext contextA) => MediaHelperBloc()..add(ChangeListMedia(items: currentItems)),
child: BlocBuilder<MediaHelperBloc, MediaHelperState>(builder: (contextB, state) {
if (state is MediaHelperFailure) { if (state is MediaHelperFailure) {
return Container(); return Container();
} else if (state is MediaHelperSuccess) { } else if (state is MediaHelperSuccess) {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Text('Hình ảnh/ Video',
style: TextStyle(color: Colors.black54, fontSize: 16)),
Text('Hình ảnh/ Video', style: TextStyle(color: Colors.black54, fontSize: 16)),
SizedBox( SizedBox(
height: 8, height: 8,
), ),
title: Text(label_title_select_media), title: Text(label_title_select_media),
actions: <Widget>[ actions: <Widget>[
CupertinoDialogAction( CupertinoDialogAction(
child: const Text(label_take_photo_or_video),
child: const Text('Chụp ảnh'),
onPressed: () { onPressed: () {
Navigator.pop(context, 'Discard'); Navigator.pop(context, 'Discard');
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => CameraHelper()))
.then((value) {
Navigator.of(context).push(MaterialPageRoute(builder: (context) => CameraHelper())).then((value) {
if (value != null) { if (value != null) {
print("ok"); print("ok");
print(value); print(value);
..pathFile = filePath; ..pathFile = filePath;
currentItems.add(newMedia); currentItems.add(newMedia);
addNewFilePaths.add(filePath); addNewFilePaths.add(filePath);
BlocProvider.of<MediaHelperBloc>(context)
..add(ChangeListMedia(items: currentItems));
BlocProvider.of<MediaHelperBloc>(context)..add(ChangeListMedia(items: currentItems));
widget.onChangeFiles(addNewFilePaths, deleteFilePaths); widget.onChangeFiles(addNewFilePaths, deleteFilePaths);
} }
}); });
}); });
}), }),
CupertinoDialogAction( CupertinoDialogAction(
child: const Text(label_select_image_from_library),
child: const Text('Chọn ảnh'),
onPressed: () async { onPressed: () async {
Navigator.pop(context, 'Discard'); Navigator.pop(context, 'Discard');
FilePickerResult result = await FilePicker.platform
.pickFiles(type: FileType.image, allowMultiple: true);
FilePickerResult result = await FilePicker.platform.pickFiles(type: FileType.image, allowMultiple: true);
if (result != null) { if (result != null) {
var listFuture = List<Future<File>>(); var listFuture = List<Future<File>>();
result.files.forEach((element) { result.files.forEach((element) {
} }
}); });
if (isExistedFileTooLarge) { if (isExistedFileTooLarge) {
Utils.showSnackBarWarning(
message: "Tập tin có kích thước lớn đã được loại bỏ.");
Utils.showSnackBarWarning(message: "Tập tin có kích thước lớn đã được loại bỏ.");
} }
BlocProvider.of<MediaHelperBloc>(context)
..add(ChangeListMedia(items: currentItems));
BlocProvider.of<MediaHelperBloc>(context)..add(ChangeListMedia(items: currentItems));
widget.onChangeFiles(addNewFilePaths, deleteFilePaths); widget.onChangeFiles(addNewFilePaths, deleteFilePaths);
}); });
} }
}), }),
CupertinoDialogAction(
child: const Text(label_select_video_from_library),
onPressed: () async {
Navigator.pop(context, 'Discard');
FilePickerResult result = await FilePicker.platform
.pickFiles(type: FileType.video, allowMultiple: true);
// CupertinoDialogAction(
// child: const Text(label_select_video_from_library),
// onPressed: () async {
// Navigator.pop(context, 'Discard');
// FilePickerResult result = await FilePicker.platform
// .pickFiles(type: FileType.video, allowMultiple: true);


if (result != null) {
bool isExistedFileTooLarge = false;
result.files?.forEach((videoFile) {
if (videoFile.size * 1000 > ConstCommon.kFileSize) {
isExistedFileTooLarge = true;
} else {
Media newMedia = Media()
..isVideo = true
..isServerFile = false
..pathFile = videoFile.path;
currentItems.add(newMedia);
addNewFilePaths.add(videoFile.path);
}
});
if (isExistedFileTooLarge) {
Utils.showSnackBarWarning(
message: "Tập tin có kích thước lớn đã được loại bỏ.");
}
BlocProvider.of<MediaHelperBloc>(context)
..add(ChangeListMedia(items: currentItems));
widget.onChangeFiles(addNewFilePaths, deleteFilePaths);
}
}),
// if (result != null) {
// bool isExistedFileTooLarge = false;
// result.files?.forEach((videoFile) {
// if (videoFile.size * 1000 > ConstCommon.kFileSize) {
// isExistedFileTooLarge = true;
// } else {
// Media newMedia = Media()
// ..isVideo = true
// ..isServerFile = false
// ..pathFile = videoFile.path;
// currentItems.add(newMedia);
// addNewFilePaths.add(videoFile.path);
// }
// });
// if (isExistedFileTooLarge) {
// Utils.showSnackBarWarning(
// message: "Tập tin có kích thước lớn đã được loại bỏ.");
// }
// BlocProvider.of<MediaHelperBloc>(context)
// ..add(ChangeListMedia(items: currentItems));
// widget.onChangeFiles(addNewFilePaths, deleteFilePaths);
// }
// }),
CupertinoDialogAction( CupertinoDialogAction(
child: const Text(label_cancel), child: const Text(label_cancel),
textStyle: TextStyle(fontWeight: FontWeight.bold), textStyle: TextStyle(fontWeight: FontWeight.bold),
} }


_buildListPoster() { _buildListPoster() {
return BlocBuilder<MediaHelperBloc, MediaHelperState>(
builder: (context, state) {
return BlocBuilder<MediaHelperBloc, MediaHelperState>(builder: (context, state) {
if (state is MediaHelperSuccess) { if (state is MediaHelperSuccess) {
return WrapContentHozListView( return WrapContentHozListView(
list: currentItems, list: currentItems,
item: item, item: item,
deleteImage: (item) { deleteImage: (item) {
if (item.isServerFile) { if (item.isServerFile) {
var url = item.pathFile
.replaceAll(ConstCommon.baseImageUrl, '');
var url = item.pathFile.replaceAll(ConstCommon.baseImageUrl, '');
deleteFilePaths.add(url); deleteFilePaths.add(url);
} }
addNewFilePaths.remove(item.pathFile); addNewFilePaths.remove(item.pathFile);
currentItems.remove(item); currentItems.remove(item);
widget.onChangeFiles(addNewFilePaths, deleteFilePaths); widget.onChangeFiles(addNewFilePaths, deleteFilePaths);
BlocProvider.of<MediaHelperBloc>(context)
.add(ChangeListMedia(items: currentItems));
BlocProvider.of<MediaHelperBloc>(context).add(ChangeListMedia(items: currentItems));
}), }),
); );
}); });
: Container( : Container(
margin: EdgeInsets.all(4.0), margin: EdgeInsets.all(4.0),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: Colors.grey),
borderRadius:
BorderRadius.all(Radius.circular(8.0))),
color: Colors.white, border: Border.all(color: Colors.grey), borderRadius: BorderRadius.all(Radius.circular(8.0))),
child: item.isServerFile child: item.isServerFile
? CachedNetworkImage(
placeholder: (context, url) =>
Icon(Icons.crop_original),
imageUrl: item.pathFile)
? CachedNetworkImage(placeholder: (context, url) => Icon(Icons.crop_original), imageUrl: item.pathFile)
: Image.file(File(item.pathFile)), : Image.file(File(item.pathFile)),
)), )),
Positioned.fill( Positioned.fill(

Loading…
Cancel
Save