[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),
top_page.dartimport '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.)