flutter_media_picker/example/lib/media_picker.dart

226 lines
8.2 KiB
Dart
Raw Normal View History

2022-11-01 08:23:06 +01:00
// SPDX-FileCopyrightText: 2022 Iconica
//
// SPDX-License-Identifier: BSD-3-Clause
2022-10-25 14:20:18 +02:00
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<ConsumerStatefulWidget> createState() => _MediaPickerState();
}
class _MediaPickerState extends ConsumerState<MediaPickerPage> {
@override
Widget build(BuildContext context) {
var mediaService = ref.read<MediaPickerService>(mediaPickerServiceProvider);
var audioService = ref.read<AudioService>(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(
2022-12-22 13:57:57 +01:00
'Create/Pick',
2022-10-25 14:20:18 +02:00
style: TextStyle(
fontWeight: FontWeight.w900,
fontSize: 20,
),
),
const SizedBox(
height: 15,
),
2022-12-23 11:57:28 +01:00
// Icons example of Media Picker
2022-10-25 14:20:18 +02:00
MediaPicker(
2022-12-22 16:18:33 +01:00
buttonType: ButtonType.icons,
2022-12-23 11:57:28 +01:00
horizontalSpacing: 40,
verticalSpacing: 20,
2022-10-25 14:20:18 +02:00
mediaPickerInputs: [
MediaPickerInputPhoto(
2022-12-23 11:57:28 +01:00
label: "Make photo",
2022-10-25 14:20:18 +02:00
pickFile: mediaService.pickImageFile,
checkPageSettings: {
2022-12-22 13:57:57 +01:00
'title': 'Share photo',
2022-10-25 14:20:18 +02:00
'width': 125.0,
'height': 200.0,
},
onComplete: (MediaResult result) {
Navigator.pop(context);
},
),
MediaPickerInputVideo(
2022-12-23 11:57:28 +01:00
label: "Make video",
2022-10-25 14:20:18 +02:00
pickFile: mediaService.pickVideoFile,
videoPlayerFactory: MediaPickerVideoPlayerFactory(),
checkPageSettings: {
2022-12-22 13:57:57 +01:00
'title': 'Share video',
2022-10-25 14:20:18 +02:00
'width': 122.5,
'height': 200.0,
},
onComplete: (MediaResult result) {
Navigator.pop(context);
},
),
if (!kIsWeb)
MediaPickerInputAudio(
2022-12-23 11:57:28 +01:00
label: "Record audio",
2022-12-22 13:57:57 +01:00
checkPageSettings: {'title': 'Share audio'},
2022-10-25 14:20:18 +02:00
onComplete: (MediaResult result) {
Navigator.pop(context);
},
audioService: audioService,
),
MediaPickerInputText(
2022-12-23 11:57:28 +01:00
label: "Write text",
2022-12-22 13:57:57 +01:00
checkPageSettings: {'title': 'Share text'},
2022-10-25 14:20:18 +02:00
onComplete: (MediaResult result) {
Navigator.pop(context);
},
),
2022-12-22 11:15:08 +01:00
MediaPickerInputFile(
2022-12-23 11:57:28 +01:00
label: "Select file",
2022-12-22 11:15:08 +01:00
pickFile: mediaService.pickFile,
fileExtensions: [
'pdf',
'doc',
'png',
'jpg',
'docx',
'bmp',
'gif',
2022-12-22 13:57:57 +01:00
'txt',
2022-12-22 11:15:08 +01:00
],
checkPageSettings: {
2022-12-22 13:57:57 +01:00
'title': 'Share file',
},
onComplete: (MediaResult result) {
Navigator.pop(context);
2022-12-22 11:15:08 +01:00
},
),
2022-10-25 14:20:18 +02:00
],
mediaCheckPage: (Widget displayResult,
Map<String, dynamic>? inputSettings,
Function onComplete) =>
MediaCheckPage(
cancel: widget.callback,
displayResult: displayResult,
inputSettings: inputSettings ?? {},
onComplete: onComplete,
),
),
2022-12-23 11:57:28 +01:00
// 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<String, dynamic>? inputSettings,
// Function onComplete) =>
// MediaCheckPage(
// cancel: widget.callback,
// displayResult: displayResult,
// inputSettings: inputSettings ?? {},
// onComplete: onComplete,
// ),
// ),
2022-10-25 14:20:18 +02:00
const SizedBox(
height: 30,
),
],
),
),
],
);
}
}