89 lines
2.7 KiB
Dart
89 lines
2.7 KiB
Dart
import 'package:dialer/pages/contact.dart';
|
|
import 'package:dialer/pages/favorites.dart';
|
|
import 'package:dialer/pages/history.dart';
|
|
import 'package:dialer/pages/composition.dart';
|
|
import 'package:dialer/pages/settings.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
class MyHomePage extends StatefulWidget {
|
|
const MyHomePage({super.key});
|
|
|
|
@override
|
|
_MyHomePageState createState() => _MyHomePageState();
|
|
}
|
|
|
|
class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
|
|
late TabController _tabController;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_tabController = TabController(length: 5, vsync: this, initialIndex: 1);
|
|
_tabController.addListener(_handleTabIndex);
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_tabController.removeListener(_handleTabIndex);
|
|
_tabController.dispose();
|
|
super.dispose();
|
|
}
|
|
|
|
void _handleTabIndex() {
|
|
setState(() {});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
backgroundColor: Colors.black,
|
|
body: Stack(
|
|
children: [
|
|
TabBarView(
|
|
controller: _tabController,
|
|
children: const [
|
|
FavoritePage(),
|
|
HistoryPage(),
|
|
ContactPage(),
|
|
CompositionPage(),
|
|
SettingsPage(),
|
|
],
|
|
),
|
|
if (_tabController.index != 3)
|
|
Positioned(
|
|
right: 20,
|
|
bottom: 20,
|
|
child: FloatingActionButton(
|
|
onPressed: () {
|
|
_tabController.animateTo(3);
|
|
},
|
|
backgroundColor: Colors.blue,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(45),
|
|
),
|
|
child: const Icon(Icons.dialpad, color: Colors.white),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
bottomNavigationBar: Container(
|
|
color: Colors.black,
|
|
child: TabBar(
|
|
controller: _tabController,
|
|
tabs: [
|
|
Tab(icon: Icon(_tabController.index == 0 ? Icons.star : Icons.star_border)),
|
|
Tab(icon: Icon(_tabController.index == 1 ? Icons.access_time_filled : Icons.access_time_outlined)),
|
|
Tab(icon: Icon(_tabController.index == 2 ? Icons.contacts : Icons.contacts_outlined)),
|
|
Tab(icon: Icon(_tabController.index == 3 ? Icons.dialpad : Icons.dialpad_outlined)),
|
|
Tab(icon: Icon(_tabController.index == 4 ? Icons.settings : Icons.settings_outlined)), // Settings icon
|
|
],
|
|
labelColor: Colors.white,
|
|
unselectedLabelColor: Colors.grey,
|
|
indicatorSize: TabBarIndicatorSize.label,
|
|
indicatorColor: Colors.white,
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|