Écran blanc dans la release mais pas dans l'émulation

Bonjours à tous,

J’aimerais savoir si vous avez déjà eu le cas et si oui si vous l’avez déjà résolu!
Je fais actuellement des essais sur l’ergonomie de l’interface de mon app sous android, j’utilise une DefaultTabController et une TabBarView gérant 3 pages.
Rien de bien compliqué dans les pages : container, column,row,text et sizedbox.pas de fonction future async, juste des variables constantes.

Je précise que j’ai tout mis à jour vers la dernière version de dart flutter,… et que j’ai 0 problèmes soulignés sous vscode.

l’émulation fonctionne nickel! ras.
Le problème intervient sur la release une fois installée sur mon phone via un « flutter build apk » dans le terminal.Après chaque installation de l’app, une fois sur deux j’ai un écran blanc à la place des pages, mais j’ai bien la TabBarView fonctionnelle et visible. si je lance au moins une 2ème fois l’app, systématiquement j’ai l’écran blanc.

Pourquoi les pages peuvent fonctionner une fois mais après plus rien? Avez-vous déjà eu ça?

merci pour votre aide!

bonjour,

Un problème en mode ‹ release › (qui ne fonctionne pas avec l’émulateur malheureusement). ça peut-être plein de choses : une erreur dans le code, une version de gradle problématique, une activation dans les configurations Android, etc.

Peux-tu nous donner plus de détails, avec un ‹ flutter doctor -v › et autres détails de logs ? Voir du code?

Tout est en StateFulWidget
Pour le TabController :

class _InfosPanelState extends State<InfosPanel> {
  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: DefaultTabController(
        length: 3,
        child: Scaffold(
          appBar: NewGradientAppBar(
            gradient: LinearGradient(colors: [black, grey30, black]),
            centerTitle: true,
            title: const ImageIcon(
              AssetImage('assets/logo/logo_simple.png'),
              size: 80,
              color: Color.fromRGBO(0, 100, 203, 1),
            ),
            bottom: TabBar(indicatorColor: blue, tabs: const [
              Tab(
                  icon: Icon(
                Icons.info_outlined,
                color: Colors.white,
              )),
              Tab(icon: Icon(Icons.thermostat, color: Colors.white)),
              Tab(icon: Icon(Icons.lightbulb_outlined, color: Colors.white)),
            ]),
          ),
          body: const TabBarView(children: [
            Center(child: Infos()),
            Center(child: Thermostat()),
            Center(child: Light()),
          ]),
        ),
      ),
    );
  }
}

Pour la 1ère page par exemple :

class _InfosState extends State<Infos> {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: black,
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          SizedBox(
            width: 350,
            child: Image.asset('assets/images/lignebleue.png'),
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              SizedBox(
                width: 72,
                height: 48,
                child: Image.asset('assets/images/int.png'),
              ),
              const SizedBox(
                width: 256,
                height: 48,
                child: Center(
                  child: Text(
                    "23.5°c - 77%",
                    style: TextStyle(color: Colors.white70, fontSize: 24),
                    textAlign: TextAlign.center,
                  ),
                ),
              )
            ],
          ),
          SizedBox(
            width: 350,
            child: Image.asset('assets/images/lignebleue.png'),
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              SizedBox(
                width: 72,
                height: 48,
                child: Image.asset('assets/images/ext.png'),
              ),
              const SizedBox(
                width: 256,
                height: 48,
                child: Center(
                  child: Text(
                    "23.5°c - 77%",
                    style: TextStyle(color: Colors.white70, fontSize: 24),
                    textAlign: TextAlign.center,
                  ),
                ),
              )
            ],
          ),
          SizedBox(
            width: 350,
            child: Image.asset('assets/images/lignebleue.png'),
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              SizedBox(
                width: 72,
                height: 48,
                child: Image.asset('assets/images/panel.png'),
              ),
              const SizedBox(
                width: 256,
                height: 48,
                child: Center(
                  child: Text(
                    "23.5°c - 77%",
                    style: TextStyle(color: Colors.white70, fontSize: 24),
                    textAlign: TextAlign.center,
                  ),
                ),
              )
            ],
          ),
          SizedBox(
            width: 350,
            child: Image.asset('assets/images/lignebleue.png'),
          ),
        ],
      ),
    );
  }
}

le Doctor dit:

PS D:\dev\epsat_aer\aer> flutter doctor -v
[√] Flutter (Channel master, 2.11.0-0.0.pre.632, on Microsoft Windows [version 10.0.17763.2565], locale fr-FR)
• Flutter version 2.11.0-0.0.pre.632 at D:\DOCUMENTS\flutter
• Upstream repository GitHub - flutter/flutter: Flutter makes it easy and fast to build beautiful apps for mobile and beyond
• Framework revision c849844feb (2 days ago), 2022-02-19 01:54:16 -0500
• Engine revision f6ea6186ee
• Dart version 2.17.0 (build 2.17.0-125.0.dev)
• DevTools version 2.11.0
[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
• Android SDK at C:\Users\PC_BUREAU\AppData\Local\Android\sdk
• Platform android-32, build-tools 31.0.0
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)
• All Android licenses accepted.
[√] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[X] Visual Studio - develop for Windows
X Visual Studio not installed; this is necessary for Windows development.
Download at Download Visual Studio Tools - Install Free for Windows, Mac, Linux.
Please install the « Desktop development with C++ » workload, including all of its default components
[√] Android Studio (version 2021.1)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
Flutter - IntelliJ IDEs Plugin | Marketplace
• Dart plugin can be installed from:
Dart - IntelliJ IDEs Plugin | Marketplace
• Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)
[√] VS Code (version 1.64.2)
• VS Code at C:\Users\PC_BUREAU\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.34.0
[√] Connected device (3 available)
• sdk gphone x86 (mobile) • emulator-5554 • android-x86 • Android 11 (API 30) (emulator)
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [version 10.0.17763.2565]
• Chrome (web) • chrome • web-javascript • Google Chrome 98.0.4758.102
[√] HTTP Host Availability
• All required HTTP hosts are available
! Doctor found issues in 1 category.

Tout fonctionne bien en émulateur et une fois sur 10 en release en gros.

Je crois que je vais tout réinstaller proprement car, j’ai tout updaté, j’ai d’abord eu un problème de shader compilation error apparemment résolu et qui à l’air de concerner juste l’émulateur. puis là il me dit :
Unable to start engine without AOT data.
Failed to create view controller.

et on verra… une usine à gaz les MAJ

Bon courage.

Vérifie quand même la version du Gradle lors de la Build. J’ai eu ce soucis une fois, j’avoue que ce truc est très pénible pour les builds sous Android, et très tatillon.

Dans le gradle-wrapper.properties du projet, il est spécifié la 6.7
Dans android studio il est question de la 7.2.

Les 2 doivent-elles être de même version ou bien elles n’ont rien à voir?

Apparemment, pas besoin qu’ils soient dans la même version, puisque pas tout à fait la même chose.

https://docs.gradle.org/current/userguide/gradle_wrapper.html

Bonjour la communauté!

Je reviens vers vous pour vous dire que j’ai trouvé ma solution (car j’imagine que suivant les cas, ce n’est pas forcément la même).
j’ai fini par réinstaller l’ensemble de mon système et,même si ça prend un certain temps, j’avoue que ça fait du bien de retrouver un peu d’organisation et de vitesse. mon pc revit et moi aussi!

après avoir fait un copié collé de mon projet dans un autre (juste des fichiers '.dart ’ et dossiers créés) je me suis aperçu que dans le pubspec.yaml l’environnement était différent :
dans le nouveau l’environnement sdk est :
environment:
sdk: « >=2.16.1 <3.0.0 »
alors que que l’ancien il commençait à >= 2.17dev
après avoir changé dans mon ancien juste cette version en 2.16, tout est fonctionnel.
J’avoue ne pas savoir pourquoi il a changé tout seul, mais ça a créé de l’incompatibilité d’où certainement l’écran blanc (que je n’avais pas sur un redmi 9 mais seulement sur un honor6) bref problème résolu!

2 « J'aime »