flutterでカード切り替え効果を実装する方法は?
Flutterでカード切り替え効果を実装するには、PageViewコンポーネントを使用することができます。以下は簡単なサンプルコードです:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: CardSwitcher(),
);
}
}
class CardSwitcher extends StatefulWidget {
@override
_CardSwitcherState createState() => _CardSwitcherState();
}
class _CardSwitcherState extends State<CardSwitcher> {
PageController _pageController;
int _currentIndex = 0;
@override
void initState() {
_pageController = PageController(initialPage: _currentIndex);
super.initState();
}
@override
void dispose() {
_pageController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Card Switcher'),
),
body: PageView(
controller: _pageController,
onPageChanged: (int index) {
setState(() {
_currentIndex = index;
});
},
children: [
Card(
color: Colors.red,
child: Center(
child: Text('Card 1',
style: TextStyle(fontSize: 24, color: Colors.white)),
),
),
Card(
color: Colors.blue,
child: Center(
child: Text('Card 2',
style: TextStyle(fontSize: 24, color: Colors.white)),
),
),
Card(
color: Colors.green,
child: Center(
child: Text('Card 3',
style: TextStyle(fontSize: 24, color: Colors.white)),
),
),
],
),
bottomNavigationBar: BottomNavigationBar(
currentIndex: _currentIndex,
onTap: (int index) {
setState(() {
_currentIndex = index;
_pageController.animateToPage(
_currentIndex,
duration: Duration(milliseconds: 500),
curve: Curves.ease,
);
});
},
items: [
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Card 1',
),
BottomNavigationBarItem(
icon: Icon(Icons.business),
label: 'Card 2',
),
BottomNavigationBarItem(
icon: Icon(Icons.school),
label: 'Card 3',
),
],
),
);
}
}
上記のサンプルコードでは、ページビューコンポーネントを使用してカードを表示し、ページコントローラーを使用してカードの切り替えを制御しています。 onPageChangedコールバック関数を設定することで、カードを切り替える際に下部ナビゲーションバーの現在選択されているアイテムを更新することができます。 下部ナビゲーションバーのオプションをクリックすることで、対応するカードにアニメーションで切り替えることができます。