Skip to main content

Request Storage Permission in Flutter

 How to Request Storage Permission in Flutter


Storage permission is needed when we want the user's device to access the media or files and to perform required actions or work efficiently.
In Flutter we can implement this using Storage Permission and asking user to enable the storage permission at run time.


Flutter Packages required is: Permission Handler
You can find these packages on pub.dev site. 


Source Code:

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

void main() => runApp(MyApp());

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

class _MyAppState extends State<MyApp> {
  Future<int> storagePermissionChecker;

  Future<int> checkStoragePermission() async {
    final result = await PermissionHandler()
        .checkPermissionStatus(PermissionGroup.storage);
    setState(() {});
    if (result.toString() == "PermissionStatus.granted") {
      return 1;
    }
    storagePermissionChecker = requestStoragePermission();
    setState(() {});

    return 0;
  }

  Future<int> requestStoragePermission() async {
    Map<PermissionGroup, PermissionStatus> result =
        await PermissionHandler().requestPermissions([PermissionGroup.storage]);
    return result[PermissionGroup.storage].toString() ==
            "PermissionStatus.granted"
        ? 1
        : 0;
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    storagePermissionChecker = (() async {
      return await checkStoragePermission();
    })();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: FutureBuilder(
        future: storagePermissionChecker,
        builder: (context, status) {
          if (status.connectionState == ConnectionState.done) {
            if (status.hasData) {
              if (status.data == 1) {
                return MyHome();
              } else {
                return Scaffold(
                  body: Center(
                    child: RaisedButton(
                      color: Colors.teal,
                      child: Text(
                        "Allow storage Permission",
                        style: TextStyle(color: Colors.white, fontSize: 18),
                      ),
                      onPressed: () {
                        storagePermissionChecker = checkStoragePermission();

                        setState(() {});
                      },
                    ),
                  ),
                );
              }
            } else {
              return Scaffold(
                  body: Center(
                child: Text(
                    'Something went wrong.. Please uninstall and Install Again'),
              ));
            }
          } else {
            return Scaffold(body: Center(child: CircularProgressIndicator()));
          }
        },
      ),
    );
  }
}

class MyHome extends StatefulWidget {
  @override
  _MyHomeState createState() => _MyHomeState();
}

class _MyHomeState extends State<MyHome> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(child: Text('Hello')),
    );
  }
}


If you like the video, do subscribe to the channel
ThankYou.









Comments

Popular posts from this blog

How to Request Location permission in Flutter | Latest Version | Android Location Enable 2022

How to Request Location permission in Flutter | Latest Version | Android Location Enable 2022 Location permission is needed when we want our device to fetch the location of user's device to know the location and perform the required actions or work efficiently. In Flutter we can implement this using Location Permission and asking user to enable the location permission at run time. Flutter Packages required are: 1. Geolocator 2. Geocoding You can find these packages on pub.dev site.  Source code: import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:geocoding/geocoding.dart'; void main() {   runApp(MyApp()); } class MyApp extends StatefulWidget {   @override   _MyAppState createState() => _MyAppState(); } class _MyAppState extends State<MyApp> {   final geolocator =       Geolocator.getCurrentPosition(forceAndroidLocationManager: true);   Position _currentPosition;   String currentAd...

Should You Cancel Your Credit Card After You Pay it Off?

Are you Cancelling your credit card...? Would it be a good option to cancel credit card after paying it off ? CNN an American news-based pay television channel  underscored reviews financial products such as credit cards and bank accounts based on their overall value. With the Covid-19 pandemic still wreaking havoc on the nation’s Financial economy, many people are making the wise decision to reduce their household expenses. Credit card annual fees are an obvious place to look at for cuts, especially if you have one or more expensive premium cards with travel perks that you can’t currently utilize. But hold on! Closing your credit card to avoid an annual fee is a little like deciding to reduce your manicure costs by cutting off your fingers. There are many less drastic measures you can take in order to reduce how much you’re paying for your cards. “Keeping a credit card open, even if you don’t use it, helps build credit,” explained Jill Gonzalez, an analyst at the persona...