5

I have a problem using the storage to persist the user login data .

the scenario like that : after login , I clear the app and try to reopen it again , sometimes it open and sometimes it's freezes on the splash screen. this only happen in the release mode .

I tried to remove every package until I found the problem with using the storage after login. so I if I not login nothing freezes .

I used get_storage and shared_preferences and secured_storage packages but nothing changed . flutter 2.10.2.

tested on real device

also this the the used packages

module:
  androidX: true # Add this line.

environment:
  sdk: ">=2.11.0 <3.0.0"

dependencies:
  dio: ^4.0.0
  get: ^4.1.4
  get_storage:
  flutter:
    sdk: flutter


dev_dependencies:
  flutter_launcher_icons: ^0.9.2

flutter_icons:
  android: true
  ios: false
  image_path: "assets/icons/launcher_icon.png"
  flutter_test:
    sdk: flutter

name: delivery
description: manager App
version: 1.6.3
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

finally I decided to share the verbose hope someone can help

https://github.com/flutter/flutter/issues/98862

user1080247
  • 1,076
  • 4
  • 21
  • 51
  • Is this freezing only on an emulator? Have you tested this on a real device as well? – Vandad Nahavandipoor Feb 21 '22 at 08:24
  • it's freezes on real device when use release mode , but in debug mode no problem – user1080247 Feb 21 '22 at 09:03
  • You could try 1) removing components until it works... or 2) print debugging each step so you know where it gets stuck. This won't fix the problem but it will tell you what the problem is. – Nerdy Bunz Feb 23 '22 at 04:12
  • about 1 , the stuck happen after login and clear all apps and then run the app , which means something happen with the login storage , but i can not remove the storage about 2 , nothing shown in the logcat or in the run or any exception – user1080247 Feb 23 '22 at 07:50
  • There might be some permission issue like internet. make sure you have mentioned them. Another way to find out problem is via logs. use `flutter logs` command and connect your device via cable and run release version of your app after installing it. Check for logs. hope it will help – Ujjawal Maurya Feb 23 '22 at 08:30
  • 1
    shouldn't `flutter_native_splash` in `dependencies:` block instead of `dev_dependencies:`? – ישו אוהב אותך Feb 23 '22 at 19:01
  • Remove flutter_native_splash: ^2.0.4 plugin and try with https://medium.com/flutter-clan/native-splash-screen-in-flutter-apps-91838a0dd4d1 – Jasmin Sojitra Feb 24 '22 at 04:50
  • i removed it and try with a new flutter project without any splash screen but it's still stopped on the black splash screen without any error – user1080247 Feb 24 '22 at 13:57

7 Answers7

5

I had a similar bug:

  • By default on Android, android:allowBackup is set to true which means that your app's data is automatically backed up to your Google Drive
  • The problem is when something in your data structure changes but you have an old backup with an old and incompatible data structure. When reinstalling a new version of the app which is incompatible with the old data structure which was backed up, it will freeze on the native splash screen.

I solved this by adding android:allowBackup="false" to android/app/src/main/AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    <application
        ...
        android:allowBackup="false"
        ...
    </application>
</manifest>

Giuseppe Cianci
  • 407
  • 3
  • 9
5

I had the same problem in our production app few days back. I released an update (where just a couple of tables were updated in the local app database) with Flutter 2.10.2 and many users started getting frozen launch screen.

After spending days trying to solve it, I finally downgraded the Flutter to 2.8 and released an update and the issue was gone.

  • thank you @Mohammad Tanvir Parvez , after couple of days and about 100 tries for all solutions , your suggestion the only one worked for me . – user1080247 Feb 25 '22 at 22:48
1

You could install sentry_flutter in your application to capture exceptions in your release app.

Also, try moving flutter_native_splash: ^2.0.4 from dev_dependencies to dependencies.

jon
  • 3,202
  • 3
  • 23
  • 35
  • i am already using it but it not catch any error , because actually there is no exception , just the app stopped in the splash screen and display this message { app not responding } – user1080247 Feb 24 '22 at 13:03
  • @user1080247 I added another suggestion to my answer. – jon Feb 24 '22 at 20:39
  • I already removing it when trying to fix this issue but it still remaining – user1080247 Feb 24 '22 at 23:11
0

Take you real device and connect it to you pc via cable and install release version of you app

  1. Go-to terminal and run flutter logs to see what's going on

  2. In some cases, may be permissions are reason. You need to specify them (don't relax because of default permissions set)

Ujjawal Maurya
  • 462
  • 5
  • 17
  • i use this command flutter run --release after the app running there is no way to run any other command until stop the execution , so there is no way to use flutter logs or any command – user1080247 Feb 23 '22 at 09:44
  • when flutter build completes, install app to you phone. then connect it to your machine and open new and fresh session/instance of terminal/command prompt and then run `flutter logs`. Then start your app from that device you've installed app on. You will see logs in terminal. (Make sure to enable usb debugging in Developer options) – Ujjawal Maurya Feb 23 '22 at 11:22
  • nothing , no error in the log – user1080247 Feb 23 '22 at 13:06
0

I think there should be 2 things --

first make sure you added the Internet permission and other required permissions in AndroidManifest.xml file

Second if you already defined all the required permissions then try this--

in your app/build.gradle file add these 3 lines

        minifyEnabled false
        useProguard false
        shrinkResources false

in

buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
            minifyEnabled false
            useProguard false
            shrinkResources false
        }
    }

then clean your project and try again I hope this will work and if you still faced that problem check the documentation again of flutter_native_splash package you used, also watch the video of Johannes Milke's tutorial which is already linked in the documentaion.

Thankyou.

Vishal Agrawal
  • 274
  • 4
  • 8
  • after adding the three lines i show this error * What went wrong: A problem occurred evaluating project ':app'. > No signature of method: build_1icb3k0ev7h17j94toyq7e1sh.android() is applicable for argument types: (build_1icb3k0ev7h17j94toyq7e1sh$_run_closure3) values: [build_1icb3k0ev7h17j94toyq7e1sh$_run_closure3@392a11c2] – user1080247 Feb 23 '22 at 22:03
  • also i removed flutter_native_splash and start new project from scratch without any splash configation but it still stopped on the the black screen untill show this message {app not responding } – user1080247 Feb 24 '22 at 13:05
  • then you must try a new project and try to run that with adding anything, also before that run the command flutter doctor -v in the terminal – Vishal Agrawal Feb 24 '22 at 13:58
  • that what i told above , i started new project from scratch but still hang on the default black splash without any issue in the log – user1080247 Feb 24 '22 at 14:01
  • You are running your app on emulator or on the real device? – Vishal Agrawal Feb 24 '22 at 14:06
  • real device using the release mode , the debug mode worked correctly – user1080247 Feb 24 '22 at 14:09
  • if you getting that error after adding those 3 lines please check this post https://stackoverflow.com/questions/61807520/how-to-fix-error-no-signature-of-method-build-ap86oam3dut3pxce3x49rdtma-androi – Vishal Agrawal Feb 24 '22 at 14:14
  • after adding the three lines and fixed the issue , nothing changed thank you – user1080247 Feb 24 '22 at 15:04
0

Since the other answers haven't given any luck, I would suggest that you start by disabling everything in your app, and gradually enable portions of the app until you reproduce the problem. For example, start by replacing your MyApp() in your main() with a blank shell of an app:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
    statusBarColor: Colors.transparent, // transparent status bar
  ));
  await initServices();
  runApp(MaterialApp(
    home: Container(color: Colors.blue),
  ));
}

This will tell you if the problem is in your initialization or the rest of your app. If the blue screen loads, it tells you that the initialization is fine. Keep dividing your app like this until you find the part this is causing the app to hang.

Dharman
  • 30,962
  • 25
  • 85
  • 135
jon
  • 3,202
  • 3
  • 23
  • 35
0

I recommend you to install the flutter sdk again from scratch and try it.

BestOFBest
  • 43
  • 7
  • As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Abhishek Dutt Feb 25 '22 at 05:05
  • thanks i updated the question to clarify what going on exactly @AbhishekDutt – user1080247 Feb 25 '22 at 05:43