Outils pour utilisateurs

Outils du site


informatique:flutter:tips_tutos_examples

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:flutter:tips_tutos_examples [15/08/2025 16:42] – [Publication Play] cyrilleinformatique:flutter:tips_tutos_examples [03/09/2025 11:39] (Version actuelle) – [Deep links] cyrille
Ligne 27: Ligne 27:
 40M app-release.aab 40M app-release.aab
 </code> </code>
 +
 +===== Secret Data in App =====
 +
 +On ne peut pas avoir de secret stocké dans l'App, c'est certain. 😉
 +
 +Par contre on peut le cacher pour le rendre plus difficile à découvrir.
 +
 +<code bash>
 +flutter build apk \
 +  --release \
 +  --obfuscate \
 +  --split-debug-info=./debug_info \
 +  --dart-define=API_URL=https://myapi.com \
 +  --dart-define=API_KEY=super_secret_key
 +</code>
 +
 +<code javascript>
 +const apiUrl = String.fromEnvironment('API_URL');
 +const apiKey = String.fromEnvironment('API_KEY');
 +</code>
 +
 +Mais dans la vraie vie on préférera mettre les secrets dans un fichier, en oubliant pas d'informer ''git'' de l'ignorer.
 +
 +<code bash>
 +flutter build apk \
 +  --release \
 +  --obfuscate \
 +  --split-debug-info=./debug_info \
 +  --dart-define-from-file=config.prod.json
 +</code>
 +
 +Et le fichier config.prod.json
 +
 +<code javascript>
 +{
 +  "API_URL": "https://myapi.com",
 +  "API_KEY": "super_secret_key",
 +  "FEATURE_X": "true",
 +  "CLIENT_ID": "xyz-123"
 +}
 +</code>
 +
 +
 +  * [[https://dev.to/alaminkarno/wait-youre-using-env-files-in-flutter-for-secrets-lets-talk-before-its-too-late-1nbf|“Wait… You’re Using .env Files in Flutter for Secrets?” Let’s Talk Before It’s Too Late]]
 +
  
 ===== Notifications ===== ===== Notifications =====
Ligne 66: Ligne 111:
  
 Le conteneur du ListView doit pouvoir géré que la hauteur n'est pas connue à priori, voir [[/informatique/flutter/debug#le_rendu_plante_sans_rien_dans_la_debug_console]]. Le conteneur du ListView doit pouvoir géré que la hauteur n'est pas connue à priori, voir [[/informatique/flutter/debug#le_rendu_plante_sans_rien_dans_la_debug_console]].
 +
 +===== Async =====
 +
 +Différence entre ''Future'' et ''Microtask'' : [[https://fluttercurious.com/mastering-flutter-microtasks-for-optimal-performance/|Mastering Flutter Microtasks for Optimal Performance]]. En conclusion, dans l' ''Event loop'' la ''Microtask'' est prioritaire par rapport à la ''Future''.
 +
  
 ===== Play Store ===== ===== Play Store =====
Ligne 86: Ligne 136:
 ===== iOS dev ===== ===== iOS dev =====
  
-{{ :informatique:flutter:remmina_codemagic_simulator_20250812-061404.jpg?direct&400|}}+{{ :informatique:flutter:remmina_codemagic_simulator_20250812-061404.jpg?direct&400|Codemagic Remmina remote access}}
  
 ==== Codemagic.io ==== ==== Codemagic.io ====
Ligne 93: Ligne 143:
  
 clients VNC : [[https://remmina.org|Remmina]] clients VNC : [[https://remmina.org|Remmina]]
 +
 +===== Android dev =====
 +
 +
 +3 méthodes pour [[https://jeroenmols.com/blog/2023/01/25/development-server-emulator/|Android emulator access to local server]]. Le plus simple est d'utiliser https://10.0.2.2:3000.
 +
 +
 +==== network_security_config.xml ====
 +
 +Pour avoir un ''network_security_config.xml'' personnalisé:
 +
 +Dans ''AndroidManifest.xml''
 +
 +<code xml>
 +<manifest>
 +    <application
 +        ...
 +        android:networkSecurityConfig="@xml/network_security_config">
 +    </application>
 +</manifest>
 +</code>
 +
 +Ensuite dans ''android/app/src/main/res/xml/network_security_config.xml'', par exemple:
 +
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<network-security-config>
 +    <base-config cleartextTrafficPermitted="true">
 +        <trust-anchors>
 +            <certificates src="system" />
 +            <certificates src="user" />
 +        </trust-anchors>
 +    </base-config>
 +    <domain-config cleartextTrafficPermitted="true">
 +        <!-- for android emulator the 10.0.2.2 is our localhost 127.0.0.1 -->
 +        <domain includeSubdomains="true">10.0.2.2</domain>
 +    </domain-config>
 +</network-security-config>
 +</code>
 +
 +==== Deep links ====
 +
 +https://codewithandrea.com/articles/flutter-deep-links/
 +
 +List de tous les deep links (prefered apps) du système (émulateur) :
 +<code bash>
 +adb shell dumpsys package domain-preferred-apps
 +</code>
 +
 +==== App Fingerprint ====
 +
 +If you are using VS Code, open a terminal inside your project and then:
 +  * ''cd android'' folder
 +  * and run ''./gradlew signingReport''
informatique/flutter/tips_tutos_examples.1755268975.txt.gz · Dernière modification : de cyrille

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki