タブ表示の書き方
dart
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '検索画面',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SearchTopPage(),
);
}
}
// 検索画面
class SearchTopPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
title: Text('検索'),
bottom: TabBar(tabs: [
Tab(text: 'あげる'),
Tab(text: '欲しい'),
Tab(text: '活用事例'),
]),
),
body: TabBarView(
children: [
SearchGivePage(),
SearchWantPage(),
SearchExamplePage(),
// Center(child: Text('あげる')),
// Center(child: Text('欲しい')),
// Center(child: Text('活用事例')),
],
),
),
);
}
}
// 検索画面(あげる)
class SearchGivePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(child: Text('あげる'));
}
}
// 検索画面(欲しい)
class SearchWantPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(child: Text('欲しい'));
}
}
// 検索画面(活用事例)
class SearchExamplePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(child: Text('活用事例'));
}
}
wigetをreturnするときにDefaultTabController
でラッピングして返してあげる。
その際に、タブの数を指定する。この部分。
dart
// 検索画面
class SearchTopPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
title: Text('検索'),
bottom: TabBar(tabs: [
Tab(text: 'あげる'),
Tab(text: '欲しい'),
Tab(text: '活用事例'),
]),
),
body: TabBarView(
children: [
SearchGivePage(),
SearchWantPage(),
SearchExamplePage(),
// Center(child: Text('あげる')),
// Center(child: Text('欲しい')),
// Center(child: Text('活用事例')),
],
),
),
);
}
}
そして、タブ化したい部分はTabBarView
で該当する中身をchildren:
として返してあげればOK。そのウィジェットは外だししても良いし。中に直接書いても良い。