shirne_dialog는 경고, 토스트, 팝업, 스낵바, 이미지 미리보기, 로딩 표시기와 같은 사용자 정의 가능한 UI 컴포넌트를 제공하는 Flutter 패키지입니다. 사용이 간편하도록 설계되어 앱 어디에서든 일관되고 세련된 외관으로 이러한 요소를 표시할 수 있습니다. Android, iOS, Web, macOS, Windows, Linux 등 여러 플랫폼을 지원하여 크로스플랫폼 애플리케이션 개발에 적합합니다. pub add를 통해 간단하게 통합 가능하며 직관적이고 반응성 있는 피드백 메커니즘을 통해 사용자 경험을 향상시킵니다.
사용 사례
경고 및 확인 표시
임시 알림(토스트) 표시
로딩 스피너 구현
모달에서 이미지 미리보기
사용자 지정 스낵바 만들기
사용자 피드백 향상
주요 기능
사용자 정의 스타일
크로스 플랫폼 지원
간편한 통합
여러 대화 유형
가볍고 빠름
재사용 가능한 컴포넌트
적합한 대상
초보자에서 고급까지의 플러터 개발자
풍부한 UI 피드백이 필요한 앱
크로스 플랫폼 프로젝트
빠른 프로토타이핑
사용자 친화적인 상호작용 요소
고려 사항
Flutter 컨텍스트에 대한 이해가 필요합니다
복잡한 디자인을 위해 추가적인 스타일링이 필요할 수 있습니다
기본 대화 기능에 제한됨
매우 맞춤형 모달 워크플로에 적합하지 않습니다
올바른 위젯 트리 구조에 의존함
원본 README
연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
Shirne Dialog
A flutter package to use alert, confirm, prompt, toast, popup, snack, imagePreview, loading etc. with customizable style in anywhere.
Features
✅ toast
✅ alert
✅ confirm
✅ prompt [new]
✅ modal
✅ popup
✅ imagePreview
✅ snack
✅ loading
✅ dropdown [new]
🚧 imagePreview support hero
🚧 modal adaptive & more style
🚧 guide
Notice
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
// Use Mydialog.navigatorKey with MaterialApp// and set theme for dialogMaterialApp(
// ...
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: [constShirneDialogTheme()]);
// ...
);
// Use with MaterialApp.routerMaterialApp.router(
routerDelegate: AppRouterDelegate(),
);
classAppRouterDelegate<T> extendsRouterDelegate<T> withPopNavigatorRouterDelegateMixin{
@overrideGlobalKey<NavigatorState>? get navigatorKey => MyDialog.navigatorKey;
// ...
}
// Use with GetxMyDialog.navigatorKey = Get.key;
// call in anywhereMyDialog.confirm('aaa');
MyDialog.alert('test');
MyDialog.toast('test');