[Flutter] push Named로 밑에 고정된 내비게이션 표시줄 만들기
개요
밑단 내비게이션 막대를 고정해 만든 글을 많이 찾았는데 복잡하고 간단하게 실행하려고 했지만 잘 모르겠다.이런 일이 있었기 때문에 여러 가지 시도가 잘못된 결과인 큐퍼티노 탭바에 상당히 간단하게 이루어진 기사를 쓰려고 합니다.
이루어지다
main.dart
import 'package:flutter/material.dart';
void main() {
  runApp(MyApp());
}
class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      routes: routes,
      home: const BottomNavigation(),
    );
  }
}
routes
route.dart
final Map<String, WidgetBuilder> routes = {
  TopPage.path: (context) => const TopPage(),
  DammyPage.path: (context) => const DammyPage(),
  LoginPage.path: (contex) => const LoginPage(),
};
아래쪽 탐색 모음
bottom_navigation.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '/pages/top_page.dart';
import '/pages/login_page.dart';
import 'util/routes.dart';
class BottomNavigation extends StatelessWidget {
  const BottomNavigation({
    Key? key,
  }) : super(key: key);
  
  Widget build(BuildContext context) {
    return CupertinoTabScaffold(
      tabBar: CupertinoTabBar(
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.login),
          ),
        ],
      ),
      tabBuilder: (BuildContext context, int index) {
        switch (index) {
          case 0:
            return CupertinoTabView(
              routes: routes,
              builder: (context) {
                return const CupertinoPageScaffold(
                  child: TopPage(),
                );
              },
            );
          case 1:
            return CupertinoTabView(
              routes: routes,
              builder: (context) {
                return const CupertinoPageScaffold(
                  child: LoginPage(),
                );
              },
            );
          default:
            return CupertinoTabView(
              routes: routes,
              builder: (context) {
                return const CupertinoPageScaffold(
                  child: TopPage(),
                );
              },
            );
        }
      },
    );
  }
}
전환 방법
// ナビゲーションバーを残したまま遷移
onPressed: () => Navigator.of(context).pushName(DammyPage.path),
// ナビゲーションバーを残さない遷移
onPressed: () => Navigator.of(context, rootNavigator: true,).pushNamed(DammyPage.path),
import 'package:flutter/material.dart';
class TopPage extends StatelessWidget {
  const TopPage({Key? key}) : super(key: key);
  static const path = '/top';
  
  Widget build(BuildContext context) {
    return SizedBox(
      child: Center(
        child: TextButton(
          child: const Text('ナビゲーションバーを残したまま遷移'),
          onPressed: () => Navigator.of(context).pushNamed(DammyPage.path),
        ),
      ),
    );
  }
}
Reference
이 문제에 관하여([Flutter] push Named로 밑에 고정된 내비게이션 표시줄 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tama8021/articles/1111_flutter_fixed_bottomnavigation_bar텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)