Flutter용 선언형 내비게이션과 오버레이.

Navigator.push/pop 또는 showDialog 없이 Navigator 2.0 페이지와 화면 로컬 오버레이를 제어합니다.

페이지는 데이터

PageEntry는 메타데이터만 저장합니다. UI는 리졸버가 생성합니다.

화면 로컬 오버레이

다이얼로그와 바텀 시트는 화면별로 제한되며, 전역 상태에 의존하지 않습니다.

상태 독립

setState, Riverpod, Bloc, Provider를 사용하세요. 의존성은 필요 없습니다.

첫 단계

declarative_nav를 설치하고 리졸버 콜백으로 페이지를 렌더링합니다.

설치

flutter pub add declarative_nav

사용 가이드

app_root.dart
class AppRoot extends StatefulWidget {
  const AppRoot({super.key});

  @override
  State<AppRoot> createState() => _AppRootState();
}

class _AppRootState extends State<AppRoot> {
  OverlayRequest? _overlay;
  late List<PageEntry> _pages;

  @override
  void initState() {
    super.initState();
    _pages = const [PageEntry(key: 'home', name: '/home')];
  }

  Widget buildPage(BuildContext context, PageEntry page) {
    return HomePage(onOpenDialog: _openDialog);
  }

  @override
  Widget build(BuildContext context) {
    return DeclarativePagesNavigator(
      pages: _pages,
      buildPage: buildPage,
      onPopTop: _popTop,
      canPopTop: () => _overlay == null,
    );
  }
}
중요 안내

이 패키지는 Navigator.push/pop 과 showDialog 호출을 피합니다. 상태에서 내비게이션과 오버레이를 제어하세요.

이전

개요

다음

설치