files formatted
This commit is contained in:
parent
e3a77d7c6a
commit
fff9219bea
@ -1 +1 @@
|
||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"permission_handler_apple","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_apple-9.0.7\\\\","native_build":true,"dependencies":[]},{"name":"photo_gallery","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\photo_gallery-1.1.1\\\\","native_build":true,"dependencies":[]},{"name":"video_player_avfoundation","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_avfoundation-2.3.8\\\\","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_thumbnail-0.5.3\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"permission_handler_android","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_android-10.2.0\\\\","native_build":true,"dependencies":[]},{"name":"photo_gallery","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\photo_gallery-1.1.1\\\\","native_build":true,"dependencies":[]},{"name":"video_player_android","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_android-2.3.10\\\\","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_thumbnail-0.5.3\\\\","native_build":true,"dependencies":[]}],"macos":[],"linux":[],"windows":[{"name":"permission_handler_windows","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_windows-0.1.2\\\\","native_build":true,"dependencies":[]}],"web":[{"name":"video_player_web","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_web-2.0.13\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"permission_handler","dependencies":["permission_handler_android","permission_handler_apple","permission_handler_windows"]},{"name":"permission_handler_android","dependencies":[]},{"name":"permission_handler_apple","dependencies":[]},{"name":"permission_handler_windows","dependencies":[]},{"name":"photo_gallery","dependencies":[]},{"name":"video_player","dependencies":["video_player_android","video_player_avfoundation","video_player_web"]},{"name":"video_player_android","dependencies":[]},{"name":"video_player_avfoundation","dependencies":[]},{"name":"video_player_web","dependencies":[]},{"name":"video_thumbnail","dependencies":[]}],"date_created":"2022-12-29 12:11:29.448664","version":"3.3.9"}
|
||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"permission_handler_apple","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_apple-9.0.7\\\\","native_build":true,"dependencies":[]},{"name":"photo_gallery","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\photo_gallery-1.1.1\\\\","native_build":true,"dependencies":[]},{"name":"video_player_avfoundation","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_avfoundation-2.3.8\\\\","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_thumbnail-0.5.3\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"permission_handler_android","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_android-10.2.0\\\\","native_build":true,"dependencies":[]},{"name":"photo_gallery","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\photo_gallery-1.1.1\\\\","native_build":true,"dependencies":[]},{"name":"video_player_android","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_android-2.3.10\\\\","native_build":true,"dependencies":[]},{"name":"video_thumbnail","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_thumbnail-0.5.3\\\\","native_build":true,"dependencies":[]}],"macos":[],"linux":[],"windows":[{"name":"permission_handler_windows","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\permission_handler_windows-0.1.2\\\\","native_build":true,"dependencies":[]}],"web":[{"name":"video_player_web","path":"C:\\\\src\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\video_player_web-2.0.13\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"permission_handler","dependencies":["permission_handler_android","permission_handler_apple","permission_handler_windows"]},{"name":"permission_handler_android","dependencies":[]},{"name":"permission_handler_apple","dependencies":[]},{"name":"permission_handler_windows","dependencies":[]},{"name":"photo_gallery","dependencies":[]},{"name":"video_player","dependencies":["video_player_android","video_player_avfoundation","video_player_web"]},{"name":"video_player_android","dependencies":[]},{"name":"video_player_avfoundation","dependencies":[]},{"name":"video_player_web","dependencies":[]},{"name":"video_thumbnail","dependencies":[]}],"date_created":"2022-12-30 05:16:13.636734","version":"3.3.9"}
|
@ -1,6 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/src/widgets/container.dart';
|
||||
import 'package:flutter/src/widgets/framework.dart';
|
||||
// ignore: depend_on_referenced_packages
|
||||
import 'package:gallery_picker/gallery_picker.dart';
|
||||
|
||||
class BottomSheetExample extends StatefulWidget {
|
||||
@ -23,7 +22,7 @@ class _BottomSheetExampleState extends State<BottomSheetExample> {
|
||||
this.selectedMedias = selectedMedias;
|
||||
pageIndex = 0;
|
||||
if (this.selectedMedias.isNotEmpty) {
|
||||
Future.delayed(Duration(milliseconds: 500)).then((value) {
|
||||
Future.delayed(const Duration(milliseconds: 500)).then((value) {
|
||||
controller.animateToPage(0,
|
||||
duration: const Duration(milliseconds: 500),
|
||||
curve: Curves.easeIn);
|
||||
@ -129,7 +128,7 @@ class _BottomSheetExampleState extends State<BottomSheetExample> {
|
||||
],
|
||||
),
|
||||
),
|
||||
Spacer(
|
||||
const Spacer(
|
||||
flex: 1,
|
||||
),
|
||||
TextButton(
|
||||
@ -141,7 +140,7 @@ class _BottomSheetExampleState extends State<BottomSheetExample> {
|
||||
size: 40,
|
||||
),
|
||||
),
|
||||
Spacer(
|
||||
const Spacer(
|
||||
flex: 1,
|
||||
),
|
||||
],
|
||||
|
@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
// ignore: depend_on_referenced_packages
|
||||
import 'package:gallery_picker/gallery_picker.dart';
|
||||
|
||||
class GalleryPickerExample extends StatefulWidget {
|
||||
@ -16,7 +17,7 @@ class _GalleryPickerExampleState extends State<GalleryPickerExample> {
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text("Pick medias"),
|
||||
title: const Text("Pick medias"),
|
||||
),
|
||||
body: Center(
|
||||
child: Column(
|
||||
|
@ -1,6 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/src/widgets/container.dart';
|
||||
import 'package:flutter/src/widgets/framework.dart';
|
||||
// ignore: depend_on_referenced_packages
|
||||
import 'package:gallery_picker/gallery_picker.dart';
|
||||
|
||||
import '../main.dart';
|
||||
@ -20,12 +19,12 @@ class _MultipleMediasViewState extends State<MultipleMediasView> {
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text("Destination Page"),
|
||||
title: const Text("Destination Page"),
|
||||
),
|
||||
body: Column(children: [
|
||||
const Spacer(),
|
||||
Text("These are your selected medias"),
|
||||
Divider(),
|
||||
const Text("These are your selected medias"),
|
||||
const Divider(),
|
||||
Expanded(
|
||||
flex: 5,
|
||||
child: Stack(children: [
|
||||
@ -100,7 +99,7 @@ class _MultipleMediasViewState extends State<MultipleMediasView> {
|
||||
color: i == pageIndex ? Colors.red : Colors.grey),
|
||||
child: Text(
|
||||
(i + 1).toString(),
|
||||
style: TextStyle(fontSize: 16, color: Colors.black),
|
||||
style: const TextStyle(fontSize: 16, color: Colors.black),
|
||||
),
|
||||
))
|
||||
]),
|
||||
|
@ -1,6 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/src/widgets/container.dart';
|
||||
import 'package:flutter/src/widgets/framework.dart';
|
||||
// ignore: depend_on_referenced_packages
|
||||
import 'package:gallery_picker/gallery_picker.dart';
|
||||
|
||||
import '../main.dart';
|
||||
@ -18,7 +17,7 @@ class _PickMediasWithBuilderState extends State<PickMediasWithBuilder> {
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text("Pick Medias With Builder"),
|
||||
title: const Text("Pick Medias With Builder"),
|
||||
),
|
||||
body: Stack(
|
||||
children: [
|
||||
@ -36,7 +35,7 @@ class _PickMediasWithBuilderState extends State<PickMediasWithBuilder> {
|
||||
color: Colors.blue,
|
||||
borderRadius: BorderRadius.circular(20)),
|
||||
alignment: Alignment.center,
|
||||
child: Text(
|
||||
child: const Text(
|
||||
'Pick Medias With Builder',
|
||||
style: TextStyle(color: Colors.white),
|
||||
),
|
||||
|
@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/src/widgets/container.dart';
|
||||
import 'package:flutter/src/widgets/framework.dart';
|
||||
// ignore: depend_on_referenced_packages
|
||||
import 'package:gallery_picker/gallery_picker.dart';
|
||||
// ignore: depend_on_referenced_packages
|
||||
import 'package:camera/camera.dart';
|
||||
import 'package:gallery_picker_example/examples/multiple_medias.dart';
|
||||
|
||||
@ -216,7 +216,7 @@ class _WhatsappPickPhotoState extends State<WhatsappPickPhoto> {
|
||||
setState(() {
|
||||
anyProcess = true;
|
||||
});
|
||||
Future.delayed(Duration(milliseconds: 100))
|
||||
Future.delayed(const Duration(milliseconds: 100))
|
||||
.then((value) => setState(() {
|
||||
anyProcess = false;
|
||||
}));
|
||||
|
@ -1,10 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
// ignore: depend_on_referenced_packages
|
||||
import 'package:gallery_picker/gallery_picker.dart';
|
||||
import 'package:gallery_picker_example/examples/pick_medias_with_builder.dart';
|
||||
import 'examples/gallery_picker_example.dart';
|
||||
import 'examples/multiple_medias.dart';
|
||||
import 'examples/whatsapp_pick_photo.dart';
|
||||
|
||||
void main() {
|
||||
runApp(const MyApp());
|
||||
@ -26,7 +23,9 @@ class MyApp extends StatelessWidget {
|
||||
/* dark theme settings */
|
||||
),
|
||||
themeMode: ThemeMode.dark,
|
||||
home: const GalleryPickerExample(),
|
||||
home: const MyHomePage(
|
||||
title: "Gallery Picker",
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -57,9 +56,8 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
|
||||
appBar: AppBar(
|
||||
title: Text("Pick medias"),
|
||||
title: Text(widget.title),
|
||||
),
|
||||
body: Center(
|
||||
child: Column(
|
||||
@ -179,7 +177,7 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
startWithRecent: true);
|
||||
if (medias != null) {
|
||||
setState(() {
|
||||
this.selectedMedias += medias;
|
||||
selectedMedias += medias;
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -227,6 +225,7 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
}
|
||||
|
||||
Future<void> getGalleryMedia() async {
|
||||
// ignore: unused_local_variable
|
||||
GalleryMedia? allmedia = await GalleryPicker.collectGallery;
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,8 @@
|
||||
// gestures. You can also use WidgetTester to find child widgets in the widget
|
||||
// tree, read text, and verify that the values of widget properties are correct.
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
//import 'package:flutter/material.dart';
|
||||
//import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
//testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||
|
@ -1,5 +1,6 @@
|
||||
import 'dart:io';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
@ -104,7 +105,7 @@ class PhoneGalleryController extends GetxController {
|
||||
Future<void> initializeAlbums() async {
|
||||
GalleryMedia? media = await PhoneGalleryController.collectGallery;
|
||||
if (media != null) {
|
||||
this._galleryAlbums = media.albums;
|
||||
_galleryAlbums = media.albums;
|
||||
}
|
||||
_isInitialized = true;
|
||||
update();
|
||||
@ -136,8 +137,10 @@ class PhoneGalleryController extends GetxController {
|
||||
entireGalleryAlbum.thumbnail =
|
||||
await videoAlbum.getThumbnail(highQuality: true);
|
||||
} catch (e) {
|
||||
if (kDebugMode) {
|
||||
print(e);
|
||||
}
|
||||
}
|
||||
} else if (lastVideoDate == null) {
|
||||
} else {
|
||||
if (lastVideoDate.isAfter(lastPhotoDate)) {
|
||||
@ -146,10 +149,12 @@ class PhoneGalleryController extends GetxController {
|
||||
await videoAlbum.getThumbnail(highQuality: true);
|
||||
} catch (e) {
|
||||
entireGalleryAlbum.thumbnail = null;
|
||||
if (kDebugMode) {
|
||||
print(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var file in videoGalleryAlbum.files) {
|
||||
entireGalleryAlbum.addFile(file);
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:photo_gallery/photo_gallery.dart';
|
||||
@ -57,9 +58,11 @@ class GalleryAlbum {
|
||||
try {
|
||||
thumbnail = await album.getThumbnail(highQuality: true);
|
||||
} catch (e) {
|
||||
if (kDebugMode) {
|
||||
print(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DateTime? get lastDate {
|
||||
if (dateCategories.isNotEmpty) {
|
||||
|
@ -1,3 +1,5 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
import 'gallery_album.dart';
|
||||
|
||||
class GalleryMedia {
|
||||
@ -10,7 +12,9 @@ class GalleryMedia {
|
||||
try {
|
||||
return albums.singleWhere((element) => element.album.name == name);
|
||||
} catch (e) {
|
||||
if (kDebugMode) {
|
||||
print(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
import 'package:photo_gallery/photo_gallery.dart';
|
||||
|
||||
extension MediumExtension on Medium {
|
||||
DateTime? get lastDate => this.modifiedDate ?? this.modifiedDate;
|
||||
DateTime? get lastDate => modifiedDate ?? modifiedDate;
|
||||
}
|
||||
|
@ -1,2 +1 @@
|
||||
|
||||
enum Mode { dark, light }
|
@ -4,14 +4,14 @@ import 'thumbnail_album.dart';
|
||||
import '../models/mode.dart';
|
||||
|
||||
class AlbumCategoriesView extends StatelessWidget {
|
||||
List<GalleryAlbum> albums;
|
||||
Function(GalleryAlbum album)? onPressed;
|
||||
Function(GalleryAlbum album, bool)? onHover;
|
||||
Function(GalleryAlbum album)? onLongPress;
|
||||
Function(GalleryAlbum album, bool)? onFocusChange;
|
||||
final List<GalleryAlbum> albums;
|
||||
final Function(GalleryAlbum album)? onPressed;
|
||||
final Function(GalleryAlbum album, bool)? onHover;
|
||||
final Function(GalleryAlbum album)? onLongPress;
|
||||
final Function(GalleryAlbum album, bool)? onFocusChange;
|
||||
final Color categoryFailIconColor, categoryBackgroundColor;
|
||||
final Mode mode;
|
||||
AlbumCategoriesView(
|
||||
const AlbumCategoriesView(
|
||||
{super.key,
|
||||
required this.albums,
|
||||
required this.categoryBackgroundColor,
|
||||
|
@ -4,11 +4,10 @@ import 'date_category_view.dart';
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class AlbumMediasView extends StatelessWidget {
|
||||
TextStyle? textStyle;
|
||||
Widget Function(BuildContext)? onFileErrorBuilder;
|
||||
AlbumMediasView(
|
||||
final TextStyle? textStyle;
|
||||
const AlbumMediasView(
|
||||
{super.key, required this.galleryAlbum, this.textStyle});
|
||||
GalleryAlbum galleryAlbum;
|
||||
final GalleryAlbum galleryAlbum;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Stack(
|
||||
|
@ -5,15 +5,15 @@ import '/models/gallery_album.dart';
|
||||
import 'thumbnail_media.dart';
|
||||
|
||||
class DateCategoryWiew extends StatelessWidget {
|
||||
TextStyle? textStyle;
|
||||
final TextStyle? textStyle;
|
||||
final Widget Function(MediaFile media, BuildContext context)?
|
||||
onMediaErrorBuilder;
|
||||
DateCategoryWiew(
|
||||
final DateCategory category;
|
||||
const DateCategoryWiew(
|
||||
{super.key,
|
||||
required this.category,
|
||||
this.textStyle,
|
||||
this.onMediaErrorBuilder});
|
||||
DateCategory category;
|
||||
|
||||
int getRowCount() {
|
||||
if (category.files.length % 4 != 0) {
|
||||
|
@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:video_player/video_player.dart';
|
||||
import '../models/media_file.dart';
|
||||
|
||||
class PhotoProvider extends StatefulWidget {
|
||||
@ -16,15 +15,14 @@ class PhotoProvider extends StatefulWidget {
|
||||
});
|
||||
|
||||
@override
|
||||
_PhotoProviderState createState() => _PhotoProviderState();
|
||||
State<PhotoProvider> createState() => _PhotoProviderState();
|
||||
}
|
||||
|
||||
class _PhotoProviderState extends State<PhotoProvider> {
|
||||
VideoPlayerController? _controller;
|
||||
late MediaFile media;
|
||||
late MediaFile _media;
|
||||
@override
|
||||
void initState() {
|
||||
media = widget.media;
|
||||
_media = widget.media;
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
initMedia();
|
||||
});
|
||||
@ -32,28 +30,27 @@ class _PhotoProviderState extends State<PhotoProvider> {
|
||||
}
|
||||
|
||||
Future<void> initMedia() async {
|
||||
await media.getData();
|
||||
await _media.getData();
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
}
|
||||
}
|
||||
|
||||
bool anyProcess = false;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (media != widget.media) {
|
||||
media = widget.media;
|
||||
if (media.data == null) {
|
||||
if (_media != widget.media) {
|
||||
_media = widget.media;
|
||||
if (_media.data == null) {
|
||||
initMedia();
|
||||
}
|
||||
}
|
||||
return media.data == null
|
||||
? Container(
|
||||
return _media.data == null
|
||||
? SizedBox(
|
||||
width: widget.width,
|
||||
height: widget.height,
|
||||
)
|
||||
: Image.memory(
|
||||
media.data!,
|
||||
_media.data!,
|
||||
width: widget.width,
|
||||
height: widget.height,
|
||||
fit: widget.fit,
|
||||
|
@ -8,7 +8,12 @@ class ThumbnailAlbum extends StatelessWidget {
|
||||
final GalleryAlbum album;
|
||||
final Color failIconColor, backgroundColor;
|
||||
final Mode mode;
|
||||
ThumbnailAlbum({super.key, required this.album, required this.failIconColor,required this.mode,required this.backgroundColor});
|
||||
const ThumbnailAlbum(
|
||||
{super.key,
|
||||
required this.album,
|
||||
required this.failIconColor,
|
||||
required this.mode,
|
||||
required this.backgroundColor});
|
||||
|
||||
Color adjustFailedBgColor() {
|
||||
if (mode == Mode.dark) {
|
||||
|
@ -7,7 +7,11 @@ class ThumbnailMedia extends StatelessWidget {
|
||||
final MediaFile media;
|
||||
final bool noIcon;
|
||||
final Widget Function(MediaFile media, BuildContext context)? onErrorBuilder;
|
||||
const ThumbnailMedia({super.key, required this.media, this.onErrorBuilder,this.noIcon=false});
|
||||
const ThumbnailMedia(
|
||||
{super.key,
|
||||
required this.media,
|
||||
this.onErrorBuilder,
|
||||
this.noIcon = false});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
@ -1,4 +1,5 @@
|
||||
import 'dart:io';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:video_player/video_player.dart';
|
||||
import '../models/media_file.dart';
|
||||
@ -8,19 +9,20 @@ class VideoProvider extends StatefulWidget {
|
||||
final double? width, height;
|
||||
|
||||
const VideoProvider({
|
||||
super.key,
|
||||
required this.media,
|
||||
this.width,
|
||||
this.height,
|
||||
});
|
||||
|
||||
@override
|
||||
_VideoProviderState createState() => _VideoProviderState();
|
||||
State<VideoProvider> createState() => _VideoProviderState();
|
||||
}
|
||||
|
||||
class _VideoProviderState extends State<VideoProvider> {
|
||||
VideoPlayerController? _controller;
|
||||
File? _file;
|
||||
late MediaFile media;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
media = widget.media;
|
||||
@ -42,9 +44,11 @@ class _VideoProviderState extends State<VideoProvider> {
|
||||
setState(() {});
|
||||
});
|
||||
} catch (e) {
|
||||
if (kDebugMode) {
|
||||
print("Failed : $e");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
@ -68,7 +72,7 @@ class _VideoProviderState extends State<VideoProvider> {
|
||||
initMedia();
|
||||
}
|
||||
return _controller == null || !_controller!.value.isInitialized
|
||||
? Container(
|
||||
? SizedBox(
|
||||
width: widget.width,
|
||||
height: widget.height,
|
||||
)
|
||||
|
@ -4,11 +4,10 @@ import '../../models/config.dart';
|
||||
import '../../../controller/gallery_controller.dart';
|
||||
|
||||
class AlbumCategoriesView extends StatelessWidget {
|
||||
PhoneGalleryController controller;
|
||||
late Config config;
|
||||
AlbumCategoriesView(this.controller, {super.key}) {
|
||||
config = controller.config;
|
||||
}
|
||||
final PhoneGalleryController controller;
|
||||
final Config config;
|
||||
AlbumCategoriesView(this.controller, {super.key})
|
||||
: config = controller.config;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return LayoutBuilder(
|
||||
|
@ -5,10 +5,10 @@ import '../../controller/gallery_controller.dart';
|
||||
import '../gallery_picker_view/tappable_appbar.dart';
|
||||
|
||||
class AlbumAppBar extends StatelessWidget with PreferredSizeWidget {
|
||||
PhoneGalleryController controller;
|
||||
BottomSheetController? bottomSheetController;
|
||||
GalleryAlbum album;
|
||||
AlbumAppBar(
|
||||
final PhoneGalleryController controller;
|
||||
final BottomSheetController? bottomSheetController;
|
||||
final GalleryAlbum album;
|
||||
const AlbumAppBar(
|
||||
{super.key,
|
||||
required this.bottomSheetController,
|
||||
required this.album,
|
||||
@ -69,5 +69,5 @@ class AlbumAppBar extends StatelessWidget with PreferredSizeWidget {
|
||||
}
|
||||
|
||||
@override
|
||||
Size get preferredSize => Size.fromHeight(48);
|
||||
Size get preferredSize => const Size.fromHeight(48);
|
||||
}
|
||||
|
@ -4,16 +4,15 @@ import '../../../controller/gallery_controller.dart';
|
||||
import 'date_category_view.dart';
|
||||
import 'selected_medias_view.dart';
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class AlbumMediasView extends StatelessWidget {
|
||||
PhoneGalleryController controller;
|
||||
bool singleMedia;
|
||||
AlbumMediasView(
|
||||
final PhoneGalleryController controller;
|
||||
final bool singleMedia;
|
||||
const AlbumMediasView(
|
||||
{super.key,
|
||||
required this.galleryAlbum,
|
||||
required this.controller,
|
||||
required this.singleMedia});
|
||||
GalleryAlbum galleryAlbum;
|
||||
final GalleryAlbum galleryAlbum;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Stack(
|
||||
|
@ -7,16 +7,16 @@ import '../../models/config.dart';
|
||||
import 'album_medias_view.dart';
|
||||
|
||||
class AlbumPage extends StatelessWidget {
|
||||
bool singleMedia;
|
||||
AlbumPage(
|
||||
final bool singleMedia;
|
||||
final PhoneGalleryController controller;
|
||||
final BottomSheetController? bottomSheetController;
|
||||
final GalleryAlbum album;
|
||||
const AlbumPage(
|
||||
{super.key,
|
||||
required this.album,
|
||||
required this.controller,
|
||||
required this.singleMedia,
|
||||
required this.bottomSheetController});
|
||||
PhoneGalleryController controller;
|
||||
BottomSheetController? bottomSheetController;
|
||||
GalleryAlbum album;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Config config = controller.config;
|
||||
|
@ -5,14 +5,15 @@ import '/models/gallery_album.dart';
|
||||
import 'media_view.dart';
|
||||
|
||||
class DateCategoryWiew extends StatelessWidget {
|
||||
PhoneGalleryController controller;
|
||||
bool singleMedia;
|
||||
DateCategoryWiew(
|
||||
final PhoneGalleryController controller;
|
||||
final bool singleMedia;
|
||||
final DateCategory category;
|
||||
|
||||
const DateCategoryWiew(
|
||||
{super.key,
|
||||
required this.category,
|
||||
required this.controller,
|
||||
required this.singleMedia});
|
||||
DateCategory category;
|
||||
|
||||
int getRowCount() {
|
||||
if (category.files.length % 4 != 0) {
|
||||
|
@ -7,9 +7,9 @@ import '../thumbnail_media_file.dart';
|
||||
|
||||
class MediaView extends StatelessWidget {
|
||||
final MediaFile file;
|
||||
PhoneGalleryController controller;
|
||||
bool singleMedia;
|
||||
MediaView(this.file,
|
||||
final PhoneGalleryController controller;
|
||||
final bool singleMedia;
|
||||
const MediaView(this.file,
|
||||
{super.key, required this.controller, required this.singleMedia});
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
@ -6,16 +6,14 @@ import '../../controller/gallery_controller.dart';
|
||||
import '../../models/config.dart';
|
||||
|
||||
class SelectedMediasView extends StatelessWidget {
|
||||
PhoneGalleryController controller;
|
||||
late Config config;
|
||||
SelectedMediasView({super.key, required this.controller}) {
|
||||
config = controller.config;
|
||||
}
|
||||
final PhoneGalleryController controller;
|
||||
final Config config;
|
||||
SelectedMediasView({super.key, required this.controller})
|
||||
: config = controller.config;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
double width = MediaQuery.of(context).size.width;
|
||||
double height = MediaQuery.of(context).size.height - 167;
|
||||
return Container(
|
||||
color: config.bottomSheetColor,
|
||||
width: width,
|
||||
@ -41,11 +39,10 @@ class SelectedMediasView extends StatelessWidget {
|
||||
fit: BoxFit.fill,
|
||||
image: ThumbnailProvider(
|
||||
mediumId: selectedMedia.medium.id,
|
||||
mediumType:
|
||||
selectedMedia.medium.mediumType,
|
||||
mediumType: selectedMedia.medium.mediumType,
|
||||
highQuality: true,
|
||||
))),
|
||||
child: SizedBox(
|
||||
child: const SizedBox(
|
||||
width: 47,
|
||||
height: 47,
|
||||
),
|
||||
|
@ -24,8 +24,10 @@ class BottomSheetLayout extends StatefulWidget {
|
||||
this.initSelectedMedias,
|
||||
this.multipleMediasBuilder,
|
||||
this.startWithRecent = true}) {
|
||||
if(initSelectedMedias!=null&&GetInstance().isRegistered<PhoneGalleryController>()){
|
||||
Get.find<PhoneGalleryController>().updateSelectedFiles(initSelectedMedias!);
|
||||
if (initSelectedMedias != null &&
|
||||
GetInstance().isRegistered<PhoneGalleryController>()) {
|
||||
Get.find<PhoneGalleryController>()
|
||||
.updateSelectedFiles(initSelectedMedias!);
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +56,7 @@ class _BottomSheetLayoutState extends State<BottomSheetLayout> {
|
||||
if (renderBox.size.height > 200 &&
|
||||
!sheetController.isExpanded &&
|
||||
!viewCollapsedPicker) {
|
||||
await Future.delayed(Duration(milliseconds: 100));
|
||||
await Future.delayed(const Duration(milliseconds: 100));
|
||||
controller.appBarTapping = false;
|
||||
setState(() {
|
||||
viewCollapsedPicker = true;
|
||||
@ -63,7 +65,7 @@ class _BottomSheetLayoutState extends State<BottomSheetLayout> {
|
||||
if (viewCollapsedPicker) {
|
||||
viewCollapsedPicker = false;
|
||||
controller.appBarTapping = false;
|
||||
await Future.delayed(Duration(milliseconds: 10));
|
||||
await Future.delayed(const Duration(milliseconds: 10));
|
||||
setState(() {});
|
||||
}
|
||||
}
|
||||
@ -131,7 +133,7 @@ class ViewCollapsed extends StatelessWidget {
|
||||
final GalleryPickerView picker;
|
||||
final bool viewPicker;
|
||||
final Function(BuildContext context) onBuild;
|
||||
ViewCollapsed({
|
||||
const ViewCollapsed({
|
||||
super.key,
|
||||
required this.picker,
|
||||
required this.onBuild,
|
||||
|
@ -12,17 +12,17 @@ import 'picker_appbar.dart';
|
||||
import 'reload_gallery.dart';
|
||||
|
||||
class GalleryPickerView extends StatefulWidget {
|
||||
Config? config;
|
||||
Function(List<MediaFile> selectedMedias) onSelect;
|
||||
Widget Function(String tag, MediaFile media, BuildContext context)?
|
||||
final Config? config;
|
||||
final Function(List<MediaFile> selectedMedias) onSelect;
|
||||
final Widget Function(String tag, MediaFile media, BuildContext context)?
|
||||
heroBuilder;
|
||||
Widget Function(List<MediaFile> medias, BuildContext context)?
|
||||
final Widget Function(List<MediaFile> medias, BuildContext context)?
|
||||
multipleMediasBuilder;
|
||||
bool startWithRecent;
|
||||
BottomSheetBarController? sheetController;
|
||||
List<MediaFile>? initSelectedMedias;
|
||||
bool singleMedia;
|
||||
GalleryPickerView(
|
||||
final bool startWithRecent;
|
||||
final BottomSheetBarController? sheetController;
|
||||
final List<MediaFile>? initSelectedMedias;
|
||||
final bool singleMedia;
|
||||
const GalleryPickerView(
|
||||
{super.key,
|
||||
this.config,
|
||||
required this.onSelect,
|
||||
@ -181,8 +181,7 @@ class _GalleryPickerState extends State<GalleryPickerView> {
|
||||
? AlbumMediasView(
|
||||
galleryAlbum: controller.recent!,
|
||||
controller: controller,
|
||||
singleMedia:widget.singleMedia
|
||||
)
|
||||
singleMedia: widget.singleMedia)
|
||||
: const Center(
|
||||
child: CircularProgressIndicator(
|
||||
color: Colors.grey,
|
||||
|
@ -5,9 +5,9 @@ import '../../controller/gallery_controller.dart';
|
||||
import 'tappable_appbar.dart';
|
||||
|
||||
class PickerAppBar extends StatelessWidget with PreferredSizeWidget {
|
||||
PhoneGalleryController controller;
|
||||
BottomSheetController? bottomSheetController;
|
||||
PickerAppBar(
|
||||
final PhoneGalleryController controller;
|
||||
final BottomSheetController? bottomSheetController;
|
||||
const PickerAppBar(
|
||||
{super.key,
|
||||
required this.bottomSheetController,
|
||||
required this.controller});
|
||||
@ -25,7 +25,7 @@ class PickerAppBar extends StatelessWidget with PreferredSizeWidget {
|
||||
bottomSheetController!.close();
|
||||
} else {
|
||||
Navigator.pop(context);
|
||||
await Future.delayed(Duration(milliseconds: 500));
|
||||
await Future.delayed(const Duration(milliseconds: 500));
|
||||
controller.disposeController();
|
||||
}
|
||||
},
|
||||
@ -67,5 +67,5 @@ class PickerAppBar extends StatelessWidget with PreferredSizeWidget {
|
||||
}
|
||||
|
||||
@override
|
||||
Size get preferredSize => Size.fromHeight(48);
|
||||
Size get preferredSize => const Size.fromHeight(48);
|
||||
}
|
||||
|
@ -2,11 +2,10 @@ import 'package:flutter/material.dart';
|
||||
import '/gallery_picker.dart';
|
||||
|
||||
class ReloadGallery extends StatelessWidget {
|
||||
late Config config;
|
||||
Function() onpressed;
|
||||
ReloadGallery(Config? config, {super.key, required this.onpressed}) {
|
||||
this.config = config ?? Config();
|
||||
}
|
||||
final Config config;
|
||||
final Function() onpressed;
|
||||
ReloadGallery(Config? config, {super.key, required this.onpressed})
|
||||
: config = config ?? Config();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@ -19,7 +18,7 @@ class ReloadGallery extends StatelessWidget {
|
||||
),
|
||||
child: Container(
|
||||
height: 50,
|
||||
padding: EdgeInsets.symmetric(horizontal: 30, vertical: 10),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 10),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.blue, borderRadius: BorderRadius.circular(10)),
|
||||
child: const Center(
|
||||
|
@ -3,9 +3,10 @@ import 'package:get/get.dart';
|
||||
import '../../controller/bottom_sheet_controller.dart';
|
||||
|
||||
class TappableAppbar extends StatelessWidget {
|
||||
BottomSheetController? controller;
|
||||
Widget child;
|
||||
TappableAppbar({super.key, required this.controller,required this.child});
|
||||
final BottomSheetController? controller;
|
||||
final Widget child;
|
||||
const TappableAppbar(
|
||||
{super.key, required this.controller, required this.child});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
@ -25,6 +25,7 @@ class GridViewStatic extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
return verticalView();
|
||||
}
|
||||
|
||||
Widget horizontalView() {
|
||||
return SizedBox(
|
||||
height: size,
|
||||
@ -38,7 +39,9 @@ class GridViewStatic extends StatelessWidget {
|
||||
height: size / crossAxisCount,
|
||||
child: Row(
|
||||
children: [
|
||||
for (int j = i; j < i + (children.length~/crossAxisCount)+1; j++)
|
||||
for (int j = i;
|
||||
j < i + (children.length ~/ crossAxisCount) + 1;
|
||||
j++)
|
||||
j < children.length
|
||||
? Expanded(
|
||||
child: Padding(
|
||||
@ -48,7 +51,7 @@ class GridViewStatic extends StatelessWidget {
|
||||
: 0),
|
||||
child: children[j],
|
||||
))
|
||||
: Spacer()
|
||||
: const Spacer()
|
||||
],
|
||||
),
|
||||
),
|
||||
@ -82,7 +85,7 @@ class GridViewStatic extends StatelessWidget {
|
||||
: 0),
|
||||
child: children[j],
|
||||
))
|
||||
: Spacer()
|
||||
: const Spacer()
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -9,7 +9,11 @@ class ThumbnailMediaFile extends StatelessWidget {
|
||||
final MediaFile file;
|
||||
final Color failIconColor;
|
||||
final Config config;
|
||||
const ThumbnailMediaFile({super.key, required this.file, required this.failIconColor,required this.config});
|
||||
const ThumbnailMediaFile(
|
||||
{super.key,
|
||||
required this.file,
|
||||
required this.failIconColor,
|
||||
required this.config});
|
||||
|
||||
Color adjustFailedBgColor() {
|
||||
if (config.mode == Mode.dark) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
//import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
//test('adds one to input values', () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user