Veuillez activer Javascript pour voir le contenu

[Flutter] Exception lors d'une copie sous IOS

· ☕ 1 min de lecture

Lors d’une tentative d’un copier/coller (pression longue) sur un champ Text sur IOS le message suivant peut apparaitre :

The getter 'pasteButtonLabel' was called on null.
The getter ‘pasteButtonLabel’ was called on null.
Receiver: null
Tried calling: pasteButtonLabel

Si tel est le cas, c’est qu’IOS n’arrive tout simplement pas à trouver la localisation adaptée pour les boutons d’actions.
Pour corriger ce point il suffit de créer un LocalizationsDelegate personnalisé pour IOS :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class CupertinoLocalisationsDelegate extends LocalizationsDelegate<CupertinoLocalizations> {
  const CupertinoLocalisationsDelegate();

  @override
  bool isSupported(Locale locale) => true;

  @override
  Future<CupertinoLocalizations> load(Locale locale) => DefaultCupertinoLocalizations.load(locale);

  @override
  bool shouldReload(CupertinoLocalisationsDelegateold) => false;
}

Et de l’utiliser au niveau de la MaterialApp :

1
2
3
4
5
6
7
MaterialApp(
     ...
      localizationsDelegates: const <LocalizationsDelegate<dynamic>>[
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
+       CupertinoLocalisationsDelegate(),
      ], ...
A noter qu’avec cette classe la localisation utilisée pour les actions sera celle par défaut du téléphone.
Pour corriger ce point il faut modifier la logique de la méthode load(Local locale) qui permet de définir la localisation.
Partager sur

Jérémy Landon
ÉCRIT PAR
Jérémy Landon
Freelance / Author / Speaker / Open source contributor

Contenu de cette page