gallery_saver_plus 3.0.1 copy "gallery_saver_plus: ^3.0.1" to clipboard
gallery_saver_plus: ^3.0.1 copied to clipboard

outdated

Saves images and videos from network or temporary file to external storage. Both images and videos will be visible in Android Gallery and iOS Photos.

example/lib/main.dart

import 'dart:io';
import 'dart:typed_data';
import 'dart:ui' as ui;

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
import 'package:gallery_saver_plus/gallery_saver.dart';
import 'package:image_picker/image_picker.dart';
import 'package:path_provider/path_provider.dart';

// double textSize = 20;

void main() {
  // WidgetsFlutterBinding.ensureInitialized();
  // runApp(MyApp());
}

// class MyApp extends StatefulWidget {
//   @override
//   _MyAppState createState() => _MyAppState();
// }

// class _MyAppState extends State<MyApp> {
//   String firstButtonText = 'Take photo';
//   String secondButtonText = 'Record video';

//   String albumName = 'Media';

//   @override
//   Widget build(BuildContext context) {
//     return MaterialApp(
//         home: Scaffold(
//       body: SafeArea(
//         child: Container(
//           color: Colors.white,
//           child: Column(
//             children: <Widget>[
//               Flexible(
//                 flex: 1,
//                 child: Container(
//                   child: SizedBox.expand(
//                     child: TextButton(
//                       style: ButtonStyle(
//                         backgroundColor: MaterialStateProperty.all(Colors.blue),
//                       ),
//                       onPressed: _takePhoto,
//                       child: Text(firstButtonText,
//                           style: TextStyle(
//                               fontSize: textSize, color: Colors.white)),
//                     ),
//                   ),
//                 ),
//               ),
//               ScreenshotWidget(),
//               Flexible(
//                 child: Container(
//                     child: SizedBox.expand(
//                   child: TextButton(
//                     style: ButtonStyle(
//                       backgroundColor: MaterialStateProperty.all(Colors.white),
//                     ),
//                     onPressed: _recordVideo,
//                     child: Text(secondButtonText,
//                         style: TextStyle(
//                             fontSize: textSize, color: Colors.blueGrey)),
//                   ),
//                 )),
//                 flex: 1,
//               )
//             ],
//           ),
//         ),
//       ),
//     ));
//   }

//   void _takePhoto() async {
//     ImagePicker()
//         .getImage(source: ImageSource.camera)
//         .then((PickedFile recordedImage) {
//       if (recordedImage != null && recordedImage.path != null) {
//         setState(() {
//           firstButtonText = 'saving in progress...';
//         });
//         GallerySaver.saveImage(recordedImage.path, albumName: albumName)
//             .then((bool success) {
//           setState(() {
//             firstButtonText = 'image saved!';
//           });
//         });
//       }
//     });
//   }

//   void _recordVideo() async {
//     ImagePicker()
//         .getVideo(source: ImageSource.camera)
//         .then((PickedFile recordedVideo) {
//       if (recordedVideo != null && recordedVideo.path != null) {
//         setState(() {
//           secondButtonText = 'saving in progress...';
//         });
//         GallerySaver.saveVideo(recordedVideo.path, albumName: albumName)
//             .then((bool success) {
//           setState(() {
//             secondButtonText = 'video saved!';
//           });
//         });
//       }
//     });
//   }

//   // ignore: unused_element
//   void _saveNetworkVideo() async {
//     String path =
//         'https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4';
//     GallerySaver.saveVideo(path, albumName: albumName).then((bool success) {
//       setState(() {
//         print('Video is saved');
//       });
//     });
//   }

//   // ignore: unused_element
//   void _saveNetworkImage() async {
//     String path =
//         'https://image.shutterstock.com/image-photo/montreal-canada-july-11-2019-600w-1450023539.jpg';
//     GallerySaver.saveImage(path, albumName: albumName).then((bool success) {
//       setState(() {
//         print('Image is saved');
//       });
//     });
//   }
// }

// class ScreenshotWidget extends StatefulWidget {
//   @override
//   _ScreenshotWidgetState createState() => _ScreenshotWidgetState();
// }

// class _ScreenshotWidgetState extends State<ScreenshotWidget> {
//   final GlobalKey _globalKey = GlobalKey();
//   String screenshotButtonText = 'Save screenshot';

//   @override
//   Widget build(BuildContext context) {
//     return Flexible(
//       flex: 1,
//       child: RepaintBoundary(
//         key: _globalKey,
//         child: Container(
//           child: SizedBox.expand(
//             child: TextButton(
//               style: ButtonStyle(
//                 backgroundColor: MaterialStateProperty.all(Colors.pink),
//               ),
//               onPressed: _saveScreenshot,
//               child: Text(screenshotButtonText,
//                   style: TextStyle(fontSize: textSize, color: Colors.white)),
//             ),
//           ),
//         ),
//       ),
//     );
//   }

//   Future<void> _saveScreenshot() async {
//     setState(() {
//       screenshotButtonText = 'saving in progress...';
//     });
//     try {
//       //extract bytes
//       final RenderRepaintBoundary boundary =
//           _globalKey.currentContext.findRenderObject();
//       final ui.Image image = await boundary.toImage(pixelRatio: 3.0);
//       final ByteData byteData =
//           await image.toByteData(format: ui.ImageByteFormat.png);
//       final Uint8List pngBytes = byteData.buffer.asUint8List();

//       //create file
//       final String dir = (await getApplicationDocumentsDirectory()).path;
//       final String fullPath = '$dir/${DateTime.now().millisecond}.png';
//       File capturedFile = File(fullPath);
//       await capturedFile.writeAsBytes(pngBytes);
//       print(capturedFile.path);

//       await GallerySaver.saveImage(capturedFile.path).then((value) {
//         setState(() {
//           screenshotButtonText = 'screenshot saved!';
//         });
//       });
//     } catch (e) {
//       print(e);
//     }
//   }
// }
30
likes
0
points
28.7k
downloads

Publisher

verified publisheropen-ci.io

Weekly Downloads

Saves images and videos from network or temporary file to external storage. Both images and videos will be visible in Android Gallery and iOS Photos.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, http, path, path_provider

More

Packages that depend on gallery_saver_plus

Packages that implement gallery_saver_plus