Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why can't a Flutter application connect to the Internet when installing "app-release.apk"? But it works normally in debug mode

In debug mode, everything looks good. I get answers and data lists from my API. But after creating app-release.apk and installing it on my phone, there isn't an Internet connection any more.

Here is my code:

ScopedModelDescendant<ReportPosViewModel>(
  builder: (context, child, model) {
    return FutureBuilder<List<Invoice>>(
      future: model.invoices,
      builder: (_,
        AsyncSnapshot<List<Invoice>> snapshot) {
          switch (snapshot.connectionState) {
            case ConnectionState.none:
            case ConnectionState.active:
            case ConnectionState.waiting:
              return Center(
                child:
                  const CircularProgressIndicator());
            case ConnectionState.done:
              if (snapshot.hasData) {
                // Something todo
              }
              else if (snapshot.hasError) {
                return NoInternetConnection(
                  action: () async {
                    await model.setInvoice();
                    await getData();
                  },
                );
              }
          }
      },
    );
  },
),
like image 241
bimasakti Avatar asked Apr 10 '19 02:04

bimasakti


People also ask

How do you check Internet connection on flutter?

If the result is not empty we call the setstate() function, and change the variable Active Connection to true, other false, Note: If you are want to check on Application initiating, then you have to call the initState() function and inside call the CheckUserConnection Function.

How do you add use permissions in flutter?

Add the permissions your app needs to the android/app/src/main/AndroidManifest. xml. Put the permissions in the manifest tag, infront of the application tag. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.

How do you run a release flutter?

To compile in release mode, we just need to add the --release flag to the flutter run command and have a physical device connected. Although we can do so, we typically do not use the flutter run command with the --release flag.


4 Answers

Open the AndroidManifest.xml file located at ./android/app/src/main and add the following line:

<manifest xmlns:android="...">
  <uses-permission android:name="android.permission.INTERNET"/> <!-- Add this -->
</manifest>

From here:

Add the android.permission.INTERNET permission if your application code needs Internet access. The standard template does not include this tag but allows Internet access during development to enable communication between Flutter tools and a running app.

like image 141
CopsOnRoad Avatar answered Oct 09 '22 07:10

CopsOnRoad


If you had put

<uses-permission android:name="android.permission.INTERNET"/>

in AndroidManifest.xml

And if it's not working, try checking the connectivity of the device. Mobile data or Wi-Fi on the Android device. Try using the Google Chrome browser for Google Search.

If it's not working, allow

8.8.8.8

in the DNS setting of the computer you are using.

like image 28
Aseem Avatar answered Oct 09 '22 07:10

Aseem


Add this to file android/app/src/main/AndroidManifest.xml after the package name:

<uses-permission android:name="android.permission.INTERNET"/>
like image 16
bimasakti Avatar answered Oct 09 '22 09:10

bimasakti


For my project, which uses Firebase, downloading the updated google-services.json from firebase console solved the issue.

like image 1
null_override Avatar answered Oct 09 '22 07:10

null_override