v4.9.0shirne_dialog
一個 Flutter 套件,可在任何地方使用可自訂樣式的提醒、彈出視窗、訊息、氣泡、圖片預覽、載入等。
51喜歡 193近 30 天下載150Pub 分數
AndroidiOSWebmacOSWindowsLinux
一個可自訂主題的對話框(警示、確認、提示、Toast ...)套件,適用於 Flutter
{"sdk":"flutter"}>=0.3.1 <1.0.0{"sdk":"flutter"}—以下為英文專案原文快照,最新內容請造訪 GitHub。
A flutter package to use alert, confirm, prompt, toast, popup, snack, imagePreview, loading etc. with customizable style in anywhere.
pub package✅ toast
✅ alert
✅ confirm
✅ prompt [new]
✅ modal
✅ popup
✅ imagePreview
✅ snack
✅ loading
✅ dropdown [new]
🚧 imagePreview support hero
🚧 modal adaptive & more style
🚧 guide
You must initialize ShirneDialogTheme on theme.extensions between flutter version 3.0.0 - 3.0.4
Above 3.0.5 dialog will use default theme when not provide in ThemeData.extends
| Toast | Dialog | ImagePreview |
|---|---|---|
| toast | dialog | imagePreview |
| Loading | Popup | Snackbar |
| loading | popup | snack |
| Dropdown | Dropdown | Customize |
| loading | popup | snack |
add localizations
dependencies:
#...
flutter_localizations:
sdk: flutter
#...
Recommanded usage
// Use Mydialog.navigatorKey with MaterialApp
// and set theme for dialog
MaterialApp(
// ...
navigatorKey: MyDialog.navigatorKey,
localizationsDelegates:[
ShirneDialogLocalizations.delegate,
// flutter locals see [https://docs.flutter.dev/development/accessibility-and-localization/internationalization]
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
theme: ThemeData.light().copyWith(extensions: [const ShirneDialogTheme()]);
// ...
);
// Use with MaterialApp.router
MaterialApp.router(
routerDelegate: AppRouterDelegate(),
);
class AppRouterDelegate<T> extends RouterDelegate<T> with PopNavigatorRouterDelegateMixin{
@override
GlobalKey<NavigatorState>? get navigatorKey => MyDialog.navigatorKey;
// ...
}
// Use with Getx
MyDialog.navigatorKey = Get.key;
// call in anywhere
MyDialog.confirm('aaa');
MyDialog.alert('test');
MyDialog.toast('test');
In 2.x and earlier
MyDialog.of(context).toast('tip message');
MyDialog.of(context).alert(Text('alert message'));
MyDialog.of(context).confirm(Text('alert message')).then((v){
});
MyDialog.of(context).popup(Text('popup contents'));
MyDialog.of(context).snack('tip');
// initialize in MaterialApp
MaterialApp(
//...
navigatorKey: MyDialog.navigatorKey,
//...
);
// and then call in anywhere
MyDialog.confirm('aaa');
MyDialog.alert('test');
MyDialog.toase('test');