flutter_saver 0.0.4 copy "flutter_saver: ^0.0.4" to clipboard
flutter_saver: ^0.0.4 copied to clipboard

A Flutter package for saving images and downloadable links across all platforms with support for various formats.

example/lib/main.dart

// ignore_for_file: use_build_context_synchronously

import 'package:flutter/material.dart';
import 'package:flutter_saver/flutter_saver.dart';
import 'package:permission_handler/permission_handler.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    requestPermission();
    super.initState();
  }

  Future<void> requestPermission() async {
    var status = await Permission.storage.request();

    if (status.isGranted) {
      debugPrint('Permission granted');
    } else {
      debugPrint('Permission denied');
    }
  }

  @override
  Widget build(BuildContext context) {
    Size size = MediaQuery.sizeOf(context);
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text('Demo flutter saver package'),
      ),
      body: SizedBox(
        width: size.width,
        height: size.height,
        child: SingleChildScrollView(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            spacing: 20.0,
            children: [
              GestureDetector(
                onTap: () async {
                  Future<bool> isSaved = FlutterSaver.saveNetworkFileAndroid(
                    link:
                        "https://salamdonya.com/assets/images/68/6894ugohl.jpg",
                  );

                  if (await isSaved) {
                    ScaffoldMessenger.of(context).showSnackBar(
                      const SnackBar(
                        content: Text('Image saved successfully!'),
                      ),
                    );
                  } else {
                    ScaffoldMessenger.of(context).showSnackBar(
                      const SnackBar(content: Text('Failed to save image.')),
                    );
                  }
                },
                child: Image.network(
                  width: 150,
                  height: 250,
                  fit: BoxFit.cover,
                  "https://salamdonya.com/assets/images/68/6894ugohl.jpg",
                ),
              ),

              GestureDetector(
                onTap: () async {
                  Future<bool> isSaved = FlutterSaver.saveNetworkFileWindowsWeb(
                    link:
                        "https://salamdonya.com/assets/images/68/6894ugohl.jpg",
                  );

                  if (await isSaved) {
                    ScaffoldMessenger.of(context).showSnackBar(
                      const SnackBar(
                        content: Text('Image saved successfully!'),
                      ),
                    );
                  } else {
                    ScaffoldMessenger.of(context).showSnackBar(
                      const SnackBar(content: Text('Failed to save image.')),
                    );
                  }
                },
                child: Image.network(
                  width: 150,
                  height: 250,
                  fit: BoxFit.cover,
                  "https://salamdonya.com/assets/images/68/6894ugohl.jpg",
                ),
              ),
            ],
          ),
        ),
      ),
      // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}
4
likes
160
points
153
downloads

Publisher

verified publisherswanflutterdev.com

Weekly Downloads

A Flutter package for saving images and downloadable links across all platforms with support for various formats.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

external_path_ios_mac, flutter, http, native_android_path, path, path_provider

More

Packages that depend on flutter_saver