함께 공부하는 Flutter
[Flutter] IndexedStack 사용법 예시
냥냥박사에디
2023. 12. 14. 20:38
반응형
IndexedStack
에서 메뉴를 두 번 누를 때 특정 위치로 이동하려면 각 메뉴에 해당하는 페이지를 따로 관리하고, 누적된 누름의 상태를 확인하여 특정 위치로 이동하면 됩니다. 아래는 간단한 예제 코드입니다.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyIndexedStack(),
);
}
}
class MyIndexedStack extends StatefulWidget {
@override
_MyIndexedStackState createState() => _MyIndexedStackState();
}
class _MyIndexedStackState extends State<MyIndexedStack> {
int _currentIndex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('IndexedStack Example'),
),
body: IndexedStack(
index: _currentIndex,
children: [
FirstPage(),
SecondPage(),
ThirdPage(),
],
),
bottomNavigationBar: BottomNavigationBar(
currentIndex: _currentIndex,
items: [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Page 1',
),
BottomNavigationBarItem(
icon: Icon(Icons.search),
label: 'Page 2',
),
BottomNavigationBarItem(
icon: Icon(Icons.settings),
label: 'Page 3',
),
],
onTap: (index) {
setState(() {
// 두 번 누르면 특정 위치로 이동
if (_currentIndex == index) {
// 특정 위치로 이동하는 코드를 작성하세요.
// 여기서는 페이지 맨 위로 이동하도록 하였습니다.
_scrollToTop();
}
_currentIndex = index;
});
},
),
);
}
// 특정 위치로 이동하는 함수 예시 (페이지 맨 위로 이동)
void _scrollToTop() {
// 각 페이지에 해당하는 스크롤 컨트롤러 등을 활용하여 원하는 위치로 이동
// 예를 들어, FirstPage에서 사용하는 스크롤 컨트롤러를 이용하여 이동 가능
}
}
class FirstPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Column(
children: List.generate(
30,
(index) => ListTile(
title: Text('Item $index'),
),
),
),
);
}
}
class SecondPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Text('Second Page'),
);
}
}
class ThirdPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Text('Third Page'),
);
}
}
이 예제에서는 IndexedStack
를 이용하여 여러 페이지를 관리하고, BottomNavigationBar
를 통해 각 페이지로 이동하게 되어 있습니다. 특정 위치로 이동하는 부분은 _scrollToTop
함수에서 원하는 동작을 수행하도록 구현할 수 있습니다.
반응형