Flutter筆記-引入CupertinoAlertDialog報‘The getter alertDialogLabel was called on null’問題

報錯的主要是因爲Flutter國際化和ios風格Dialog衝突造成的。

解決方案:
1、在MaterialApp中添加FallbackCupertinoLocalisationsDelegate

localizationsDelegates: [
   GlobalMaterialLocalizations.delegate,
   GlobalWidgetsLocalizations.delegate,
   // 在國際化時造成和Dialog衝突解決方案
   FallbackCupertinoLocalisationsDelegate(),
 ],

2、創建FallbackCupertinoLocalisationsDelegate類

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class FallbackCupertinoLocalisationsDelegate
    extends LocalizationsDelegate<CupertinoLocalizations> {
  const FallbackCupertinoLocalisationsDelegate();

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

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

  @override
  bool shouldReload(FallbackCupertinoLocalisationsDelegate old) => false;
}

到此衝突解決完成,再次運行即可看到彈窗效果。

參考資料:
https://juejin.im/post/5c417d626fb9a049ec6b5d44

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章