패키지, 저장소 및 앱 카테고리 검색

flutter_smart_dialog 표지
패키지 상세v5.3.0

flutter_smart_dialog

아름다운 Flutter 다이얼로그 솔루션. 쉽게 토스트, 로딩 및 사용자 정의 다이얼로그를 구현하고, 다이얼로그 사용을 더 쉽게 만드세요!

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
1.4만
좋아요
645
Pub 점수
160

패키지 설치

flutter pub add flutter_smart_dialog

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

flutter_smart_dialog는 토스트 메시지, 로딩 인디케이터 및 사용자 정의 대화 상자를 포함하여 다이얼로그 구현을 간소화하는 가볍고 우아한 Flutter 패키지입니다. 다양한 유형의 팝업 UI 요소를 여러 플랫폼에서 일관되고 깔끔한 API로 표시할 수 있도록 제공합니다. 최소한의 설정과 직관적인 메서드를 통해 개발자는 반복되는 코드를 작성하지 않고도 사용자 피드백과 상호작용을 빠르게 향상시킬 수 있습니다. 이 패키지는 Android, iOS, Web, macOS, Windows, Linux를 지원하며, 통합된 대화 경험을 원하는 크로스플랫폼 애플리케이션에 이상적입니다.

사용 사례

  • 토스트 알림 표시
  • 비동기 작업 중 로딩 표시기 표시
  • 사용자 정의 가능한 대화 오버레이 만들기
  • 빠른 사용자 피드백 메커니즘 구현
  • 다중 화면 앱에서 모달 대화 상자 관리하기

주요 기능

  • 간단하고 직관적인 API
  • 토스트, 로딩 및 사용자 지정 대화 상자를 지원합니다
  • 크로스 플랫폼 호환성
  • 최소한의 보일러플레이트 코드
  • 사용자 정의 가능한 애니메이션 및 테마
  • 기존 Flutter 프로젝트와의 간편한 통합

적합한 대상

  • 크로스 플랫폼 플러터 앱을 개발하는 개발자
  • 일관된 UI 피드백이 필요한 팀
  • 경량 알림 솔루션을 필요로 하는 프로젝트
  • 자주 사용자 상호작용 프롬프트가 있는 앱
  • UX 향상에 집중하는 프론트엔드 개발자

고려 사항

  • 높은 맞춤형 외관을 위해 추가 스타일링이 필요할 수 있습니다
  • 다이얼로그 유형의 UI 컴포넌트에 한정
  • Flutter 렌더링 파이프라인에 의존합니다
  • 복잡한 탐색 워크플로우에 적합하지 않습니다
  • 다른 상태 관리 솔루션과 함께 사용하는 것이 가장 좋습니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

pub stars issues commit

Feature and Usage(Must read!):super detailed guide

功能和用法(必看!): 超详细指南


Language: English | 中文

Migrate doc:3.x migrate 4.0 | 3.x 迁移 4.0

Flutter 2:Please use flutter_smart_dialog: 4.2.5

Introduction

An elegant Flutter Dialog solution.

Some Effect

attachLocationAndPoint

attachHighlight

dialogStack

loadingCustom

toastCustom

Advantage

  • Do not need BuildContext

  • Can penetrate dark background, click on the page behind dialog

  • Support dialog stack,close the specified dialog

  • Support positioning widget, display the specified location dialog

  • Support highlight feature,dissolve the specified location mask

  • Easily implement toast,loading,attach dialog,custome dialog,custome notify

Quick start

Install

Initialization

initialization

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage,
      // here
      navigatorObservers: [FlutterSmartDialog.observer],
      // here
      builder: FlutterSmartDialog.init(),
    );
  }
}

Advanced initialization: configure global custom Loading and Toast

SmartDialog's showLoading and showToast provide a default style. Of course, custom param are definitely supported.

  • SmartDialog custom Loading or Toast is very simple: However, when using it, it may make you feel a little troublesome
  • for example
    • Use custom Loading: SmartDialog.showLoading(builder: (_) => CustomLoadingWidget);
    • The effect we want must be like this: SmartDialog.showLoading();
  • In view of the above considerations, I added the function of setting custom default Loading and Toast styles at the entrance

Let me show you the following

  • The entry needs to be configured: implement toastBuilder and loadingBuilder, and pass in custom Toast and Loading
void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage,
      // here
      navigatorObservers: [FlutterSmartDialog.observer],
      // here
      builder: FlutterSmartDialog.init(
        //custom default toast widget
        toastBuilder: (String msg) => CustomToastWidget(msg: msg),
        //custom default loading widget
        loadingBuilder: (String msg) => CustomLoadingWidget(msg: msg),
        //custom default notify widget
        notifyStyle: FlutterSmartNotifyStyle(
          successBuilder: (String msg) => CustomSuccessWidget(msg: msg),
          failureBuilder: (String msg) => CustomFailureWidget(msg: msg),
          warningBuilder: (String msg) => CustomWarningWidget(msg: msg),
          alertBuilder: (String msg) => CustomAlertWidget(msg: msg),
          errorBuilder: (String msg) => CustomErrorWidget(msg: msg),
        ),
      ),
    );
  }
}
  • SmartDialog supports default global configuration
SmartDialog.config
  ..custom = SmartConfigCustom(
    maskColor: Colors.black.withOpacity(0.35),
    useAnimation: true,
  )
  ..attach = SmartConfigAttach(
    animationType: SmartAnimationType.scale,
    usePenetrate: false,
  )
  ..loading = SmartConfigLoading(
    clickMaskDismiss: false,
    leastLoadingTime: const Duration(milliseconds: 0),
  )
  ..toast = SmartConfigToast(
    intervalTime: const Duration(milliseconds: 100),
    displayTime: const Duration(milliseconds: 2000),
  );

Easy usage

  • toast usage💬
SmartDialog.showToast('test toast');

toastDefault

  • loading usage⏳
SmartDialog.showLoading();
await Future.delayed(Duration(seconds: 2));
SmartDialog.dismiss(); 

loadingDefault

  • dialog usage🎨
SmartDialog.show(builder: (context) {
  return Container(
    height: 80,
    width: 180,
    decoration: BoxDecoration(
      color: Colors.black,
      borderRadius: BorderRadius.circular(10),
    ),
    alignment: Alignment.center,
    child:
    Text('easy custom dialog', style: TextStyle(color: Colors.white)),
  );
});

dialogEasy

카테고리

의존성

의존성 목록 2 개

소스 저장소

이 패키지를 사용하는 프로젝트