diff --git a/lib/base.dart b/lib/base.dart index de6e880..46f1138 100644 --- a/lib/base.dart +++ b/lib/base.dart @@ -4,6 +4,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:gussuri/component/header.dart'; import 'package:gussuri/enums/TabItem.dart'; import 'package:gussuri/helper/DeviceData.dart'; +import 'package:gussuri/home.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; import 'utils.dart'; @@ -43,6 +44,13 @@ class Base extends HookWidget { @override Widget build(BuildContext context) { final currentTab = useState(TabItem.home); + final currentIndex = useState(0); + + void updateTab(int newIndex, TabItem newTab) { + currentIndex.value = newIndex; + currentTab.value = newTab; + } + return Scaffold( appBar: const Header(), body: Stack( @@ -53,9 +61,15 @@ class Base extends HookWidget { child: Navigator( key: _navigatorKeys[tabItem], onGenerateRoute: (settings) { - return MaterialPageRoute( - builder: (context) => tabItem.page, - ); + if(tabItem.page is Home) { + return MaterialPageRoute( + builder: (context) => Home(updateIndex: updateTab), + ); + } else { + return MaterialPageRoute( + builder: (context) => tabItem.page, + ); + } }, ), ), @@ -63,7 +77,7 @@ class Base extends HookWidget { .toList(), ), bottomNavigationBar: BottomNavigationBar( - currentIndex: TabItem.values.indexOf(currentTab.value), + currentIndex: currentIndex.value, onTap: (index) { final selectedTab = TabItem.values[index]; if (selectedTab == TabItem.calender) { @@ -76,6 +90,7 @@ class Base extends HookWidget { } else { // 未選択 currentTab.value = selectedTab; + currentIndex.value = index; } }, items: TabItem.values diff --git a/lib/home.dart b/lib/home.dart index 40bc1e9..8df357d 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; -import 'package:gussuri/calendar.dart'; import 'package:gussuri/component/gradient_box.dart'; +import 'package:gussuri/enums/TabItem.dart'; import 'package:gussuri/helper/DateKey.dart'; import 'package:gussuri/helper/DeviceData.dart'; import 'package:gussuri/input.dart'; @@ -12,7 +12,9 @@ import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; class Home extends StatefulWidget { - const Home({Key? key}) : super(key: key); + final Function? updateIndex; + + const Home({Key? key, this.updateIndex}) : super(key: key); @override State createState() => _HomeState(); @@ -67,7 +69,7 @@ class _HomeState extends State { final data = res.data(); eventData.addAll({ DateTime.utc(date.year, date.month, int.parse(res.id)): - List.generate(1, (index) { + List.generate(1, (index) { return Event(data, res.reference.path); }) }); @@ -111,7 +113,8 @@ class _HomeState extends State { Navigator.push( context, MaterialPageRoute( - builder: (context) => Input(DateTime.now()))); + builder: (context) => + Input(DateTime.now()))); } : null, child: const Text('睡眠記録'), @@ -129,10 +132,7 @@ class _HomeState extends State { textStyle: const TextStyle( fontSize: 22, fontWeight: FontWeight.bold)), onPressed: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => const Calendar())); + widget.updateIndex?.call(1, TabItem.calender); }, icon: const Icon(Icons.calendar_month), label: const Text('睡眠記録カレンダー'),