Skip to content

Commit

Permalink
fix: tab active bug #97
Browse files Browse the repository at this point in the history
  • Loading branch information
ayuki-joto committed Feb 27, 2024
1 parent a813cdd commit c3e9e5c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 12 deletions.
23 changes: 19 additions & 4 deletions lib/base.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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(
Expand All @@ -53,17 +61,23 @@ class Base extends HookWidget {
child: Navigator(
key: _navigatorKeys[tabItem],
onGenerateRoute: (settings) {
return MaterialPageRoute<Widget>(
builder: (context) => tabItem.page,
);
if(tabItem.page is Home) {
return MaterialPageRoute<Widget>(
builder: (context) => Home(updateIndex: updateTab),
);
} else {
return MaterialPageRoute<Widget>(
builder: (context) => tabItem.page,
);
}
},
),
),
)
.toList(),
),
bottomNavigationBar: BottomNavigationBar(
currentIndex: TabItem.values.indexOf(currentTab.value),
currentIndex: currentIndex.value,
onTap: (index) {
final selectedTab = TabItem.values[index];
if (selectedTab == TabItem.calender) {
Expand All @@ -76,6 +90,7 @@ class Base extends HookWidget {
} else {
// 未選択
currentTab.value = selectedTab;
currentIndex.value = index;
}
},
items: TabItem.values
Expand Down
16 changes: 8 additions & 8 deletions lib/home.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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<Home> createState() => _HomeState();
Expand Down Expand Up @@ -67,7 +69,7 @@ class _HomeState extends State<Home> {
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);
})
});
Expand Down Expand Up @@ -111,7 +113,8 @@ class _HomeState extends State<Home> {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Input(DateTime.now())));
builder: (context) =>
Input(DateTime.now())));
}
: null,
child: const Text('睡眠記録'),
Expand All @@ -129,10 +132,7 @@ class _HomeState extends State<Home> {
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('睡眠記録カレンダー'),
Expand Down

0 comments on commit c3e9e5c

Please sign in to comment.