// SPDX-FileCopyrightText: 2022 Iconica // // SPDX-License-Identifier: BSD-3-Clause import 'package:example/media_picker_check.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_media_picker/flutter_media_picker.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; class MediaPickerPage extends ConsumerStatefulWidget { const MediaPickerPage({required this.callback, Key? key}) : super(key: key); final Function callback; @override ConsumerState createState() => _MediaPickerState(); } class _MediaPickerState extends ConsumerState { @override Widget build(BuildContext context) { var mediaService = ref.read(mediaPickerServiceProvider); var audioService = ref.read(audioPlayerServiceProvider); return Wrap( children: [ Container( width: MediaQuery.of(context).size.width, decoration: const BoxDecoration( color: Colors.white, borderRadius: BorderRadius.only( topLeft: Radius.circular(15), topRight: Radius.circular(15), ), ), child: Column( children: [ const SizedBox( height: 8, ), Container( width: 70, height: 5, decoration: BoxDecoration( borderRadius: BorderRadius.circular(100), color: const Color(0xFF000000).withOpacity(0.50), ), ), const SizedBox( height: 14, ), const Text( 'Create/Pick', style: TextStyle( fontWeight: FontWeight.w900, fontSize: 20, ), ), const SizedBox( height: 15, ), // Icons example of Media Picker MediaPicker( buttonType: ButtonType.icons, horizontalSpacing: 40, verticalSpacing: 20, mediaPickerInputs: [ MediaPickerInputPhoto( label: "Make photo", pickFile: mediaService.pickImageFile, checkPageSettings: { 'title': 'Share photo', 'width': 125.0, 'height': 200.0, }, onComplete: (MediaResult result) { Navigator.pop(context); }, ), MediaPickerInputVideo( label: "Make video", pickFile: mediaService.pickVideoFile, videoPlayerFactory: MediaPickerVideoPlayerFactory(), checkPageSettings: { 'title': 'Share video', 'width': 122.5, 'height': 200.0, }, onComplete: (MediaResult result) { Navigator.pop(context); }, ), if (!kIsWeb) MediaPickerInputAudio( label: "Record audio", checkPageSettings: {'title': 'Share audio'}, onComplete: (MediaResult result) { Navigator.pop(context); }, audioService: audioService, ), MediaPickerInputText( label: "Write text", checkPageSettings: {'title': 'Share text'}, onComplete: (MediaResult result) { Navigator.pop(context); }, ), MediaPickerInputFile( label: "Select file", pickFile: mediaService.pickFile, fileExtensions: [ 'pdf', 'doc', 'png', 'jpg', 'docx', 'bmp', 'gif', 'txt', ], checkPageSettings: { 'title': 'Share file', }, onComplete: (MediaResult result) { Navigator.pop(context); }, ), ], mediaCheckPage: (Widget displayResult, Map? inputSettings, Function onComplete) => MediaCheckPage( cancel: widget.callback, displayResult: displayResult, inputSettings: inputSettings ?? {}, onComplete: onComplete, ), ), // Text example of Media Picker // MediaPicker( // buttonType: ButtonType.text, // mediaPickerInputs: [ // MediaPickerInputPhoto( // label: "Make photo", // pickFile: mediaService.pickImageFile, // checkPageSettings: { // 'title': 'Share photo', // 'width': 125.0, // 'height': 200.0, // }, // onComplete: (MediaResult result) { // Navigator.pop(context); // }, // ), // MediaPickerInputVideo( // label: "Make video", // pickFile: mediaService.pickVideoFile, // videoPlayerFactory: MediaPickerVideoPlayerFactory(), // checkPageSettings: { // 'title': 'Share video', // 'width': 122.5, // 'height': 200.0, // }, // onComplete: (MediaResult result) { // Navigator.pop(context); // }, // ), // if (!kIsWeb) // MediaPickerInputAudio( // label: "Record audio", // checkPageSettings: {'title': 'Share audio'}, // onComplete: (MediaResult result) { // Navigator.pop(context); // }, // audioService: audioService, // ), // MediaPickerInputText( // label: "Write text", // checkPageSettings: {'title': 'Share text'}, // onComplete: (MediaResult result) { // Navigator.pop(context); // }, // ), // MediaPickerInputFile( // label: "Select file", // pickFile: mediaService.pickFile, // fileExtensions: [ // 'pdf', // 'doc', // 'png', // 'jpg', // 'docx', // 'bmp', // 'gif', // 'txt', // ], // checkPageSettings: { // 'title': 'Share file', // }, // onComplete: (MediaResult result) { // Navigator.pop(context); // }, // ), // ], // mediaCheckPage: (Widget displayResult, // Map? inputSettings, // Function onComplete) => // MediaCheckPage( // cancel: widget.callback, // displayResult: displayResult, // inputSettings: inputSettings ?? {}, // onComplete: onComplete, // ), // ), const SizedBox( height: 30, ), ], ), ), ], ); } }