Browse Source

show media action in gridview

master
daivph 5 years ago
parent
commit
83f2771b65
2 changed files with 33 additions and 32 deletions
  1. +1
    -1
      ios/Flutter/.last_build_id
  2. +32
    -31
      lib/presentation/custom_widgets/widget_media_picker.dart

+ 1
- 1
ios/Flutter/.last_build_id View File

@@ -1 +1 @@
af0eb765f94aecba228edd3e3fe3c4f4
5729eb498eaeb9c64784fcfc80bbb33b

+ 32
- 31
lib/presentation/custom_widgets/widget_media_picker.dart View File

@@ -13,6 +13,7 @@ import 'package:file_picker/file_picker.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get/get.dart';

import 'bloc/media_helper_bloc.dart';
import 'hoz_list_view.dart';
@@ -201,28 +202,27 @@ class _WidgetMediaPickerState extends State<WidgetMediaPicker> {
return BlocBuilder<MediaHelperBloc, MediaHelperState>(
builder: (context, state) {
if (state is MediaHelperSuccess) {
return WrapContentHozListView(
itemBuilder: (context, index) {
var item = currentItems[index];
return _WidgetItemMedia(
item: item,
deleteImage: (item) {
if (item.isServerFile) {
var url =
item.pathFile.replaceAll(ConstCommon.baseImageUrl, '');
deleteFilePaths.add(url);
}
currentItems.remove(item);
widget.onChangeFiles(addNewFilePaths, deleteFilePaths);
BlocProvider.of<MediaHelperBloc>(context)
.add(ChangeListMedia(items: currentItems));
});
},
separatorBuilder: (context, index) {
return SizedBox(width: 4);
},
list: currentItems,
);
return GridView.count(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
crossAxisCount: 4,
children: currentItems.map(
(item) {
return _WidgetItemMedia(
item: item,
deleteImage: (item) {
if (item.isServerFile) {
var url = item.pathFile
.replaceAll(ConstCommon.baseImageUrl, '');
deleteFilePaths.add(url);
}
currentItems.remove(item);
widget.onChangeFiles(addNewFilePaths, deleteFilePaths);
BlocProvider.of<MediaHelperBloc>(context)
.add(ChangeListMedia(items: currentItems));
});
},
).toList());
}
return Container();
});
@@ -236,6 +236,9 @@ class _WidgetItemMedia extends StatelessWidget {
_WidgetItemMedia({@required this.item, @required this.deleteImage});

BuildContext _context;
// screenSize/rowGridview - iconSize - (rowGridview-1)*marginContainer
// Get.width/4 - 24 - 3*4
double positionIconDelete = -(Get.width / 4 - 36);

@override
Widget build(BuildContext context) {
@@ -245,10 +248,10 @@ class _WidgetItemMedia extends StatelessWidget {
print("Show preview image or video");
},
child: Stack(
alignment: Alignment.bottomCenter,
alignment: Alignment.topRight,
overflow: Overflow.visible,
children: <Widget>[
Positioned(
Positioned.fill(
child: item.isVideo
? VideoWidget(
pathFile: item.pathFile,
@@ -256,8 +259,7 @@ class _WidgetItemMedia extends StatelessWidget {
play: false,
)
: Container(
width: 100,
height: 100,
margin: EdgeInsets.all(4.0),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: Colors.grey),
@@ -268,12 +270,11 @@ class _WidgetItemMedia extends StatelessWidget {
placeholder: (context, url) =>
Icon(Icons.crop_original),
imageUrl: item.pathFile)
: Image.file(File(item.pathFile),
width: 100, height: 100),
: Image.file(File(item.pathFile)),
)),
Positioned(
top: -14,
right: -14,
Positioned.fill(
top: positionIconDelete,
right: positionIconDelete,
child: IconButton(
icon: Icon(
Icons.cancel,

Loading…
Cancel
Save