[Flutter] BottomNavigationBar를 5화면 작성해 보았다.
10402 단어 BottomNavigationBarDartFlutter
목표
이번은 5화면으로 나누어 작성하고 싶습니다.
실수하거나 부족한 점이 있으면 가르쳐 주시면 도움이됩니다.
운영 환경
ko-KR)
전체 코드
home_screen.dart
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:surfing_sns/view/page/feed_page.dart';
import 'package:surfing_sns/view/page/profile_page.dart';
import 'package:surfing_sns/view/page/surf_search_page.dart';
import 'package:surfing_sns/view/page/team_page.dart';
import 'package:surfing_sns/view/page/weather_page.dart';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
List<Widget> _pages;
int _currentIndex = 0;
@override
void initState() {
_pages = [
FeedPage(),
SurfSearchPage(),
TeamPage(),
WeatherPage(),
ProfilePage(),
];
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _pages[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
currentIndex: _currentIndex,
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
items: [
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.home),
label: ("Home"),
),
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.search),
label: ("Search"),
),
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.plusSquare),
label: ("Team"),
),
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.sun),
label: ("Weather"),
),
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.user),
label: ("Profile"),
),
],
),
);
}
}
진행 방법(5단계)
1, 네비게이션으로 천이하는 처의 화면의 설정(List 형식)
2, 천이처의 화면을 나타내는 배열 번호의 설정
3, BottomNavigationBarItem 설정
4, Item을 눌렀을 때의 처리 설정
5, 전환 대상 화면 표시
1, 네비게이션으로 천이하는 처의 화면의 설정(List 형식)
_pages라는 List에 전환 대상 페이지를 저장합니다.
List<Widget> _pages;
@override
void initState() {
_pages = [
FeedPage(),
SurfSearchPage(),
TeamPage(),
WeatherPage(),
ProfilePage(),
];
super.initState();
}
2, 전환 대상 화면을 나타내는 배열 번호 설정 [currentIndex]
변수 속성 만들기
처음에 표시할 페이지를 Home이라고 합니다.
List<Widget> _pages;
int _currentIndex = 0;//Homeからスタートさせる為
@override
void initState() {
_pages = [
FeedPage(),
SurfSearchPage(),
TeamPage(),
WeatherPage(),
ProfilePage(),
];
super.initState();
}
3, BottomNavigationBarItem 설정 [items]
BottomNavigationBar에는 [items]라는 속성이 있습니다.
items (List BottomNavigationBarItem)
이 List를 5개 늘어놓아 준다
icon은 font_awesome_flutter을 사용하고 있습니다.
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('サンプル'),
),
bottomNavigationBar: BottomNavigationBar(
items: [
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.home),
label: ("Home"),
),
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.search),
label: ("Search"),
),
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.plusSquare),
label: ("Team"),
),
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.sun),
label: ("Weather"),
),
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.user),
label: ("Profile"),
),
],
),
);
}
4, Item을 눌렀을 때의 처리 설정 [onTap]
2, 에 눌러진 배열 번호를 설정합니다. 페이지에 날려 주는 작업이 됩니다.
onTap 속성은 하나의 인수가 포함된 함수입니다.
StatefulWidget을 사용하기 때문에 setState를 사용합니다.
bottomNavigationBar: BottomNavigationBar(
onTap: (index) {
setState(() {
_currentIndex = index; //タップした時に配列に行かせる
});
},
5, 전환 대상 화면 표시 [Scaffold,body 속성에 넣기]
return Scaffold(
body: _pages[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
currentIndex: _currentIndex,//属性追加
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
감상
비교적 간단하고 이해할 수 있었을까라고 생각합니다.
마지막으로, 굉장한 TODO 앱을 릴리스하고 있습니다, 봐 주시면 영광입니다.
가치 DO
Reference
이 문제에 관하여([Flutter] BottomNavigationBar를 5화면 작성해 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/A4UxdAF799hT6WT/items/e3f30d31b618fe2fa1d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)