報錯的主要是因爲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