diff --git a/lib/screen/favorite_repositories_page.dart b/lib/screen/favorite_repositories_page.dart new file mode 100644 index 0000000..27420ef --- /dev/null +++ b/lib/screen/favorite_repositories_page.dart @@ -0,0 +1,19 @@ +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +class FavoriteRepositoriesPage extends HookConsumerWidget { + const FavoriteRepositoriesPage({super.key}); + @override + Widget build(BuildContext context, WidgetRef ref) { + return Scaffold( + appBar: AppBar( + title: const Text('お気に入り'), + ), + body: Container( + child: Center( + child: Text('テキスト'), + ), + ), + ); + } +} diff --git a/lib/screen/github_list_page.dart b/lib/screen/github_list_page.dart index 0096fb0..7bcfd5d 100644 --- a/lib/screen/github_list_page.dart +++ b/lib/screen/github_list_page.dart @@ -17,6 +17,7 @@ class GithubListPage extends HookConsumerWidget { final repositories = ref.watch(githubRepositoryControllerProvider); final refreshController = useState(RefreshController()); final scrollController = useScrollController(); + final focusNode = useState(FocusNode()); return Scaffold( appBar: AppBar( @@ -41,11 +42,13 @@ class GithubListPage extends HookConsumerWidget { decoration: const InputDecoration( hintText: 'Search', ), + focusNode: focusNode.value, ) - : const Text('Github List'), + : const Text('探す'), actions: [ IconButton( onPressed: () { + focusNode.value.requestFocus(); isSearch.value = true; }, icon: const Icon(Icons.search), diff --git a/lib/screen/root_page.dart b/lib/screen/root_page.dart new file mode 100644 index 0000000..cfd97f8 --- /dev/null +++ b/lib/screen/root_page.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:github_searcher_flutter/screen/favorite_repositories_page.dart'; +import 'package:github_searcher_flutter/screen/github_list_page.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +class RootPage extends HookConsumerWidget { + const RootPage({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final selectedIndex = useState(0); + + return Scaffold( + body: IndexedStack( + index: selectedIndex.value, + children: const [ + GithubListPage(), + FavoriteRepositoriesPage(), + ], + ), + bottomNavigationBar: BottomNavigationBar( + items: const [ + BottomNavigationBarItem( + icon: Icon(Icons.search), + label: '探す', + ), + BottomNavigationBarItem( + icon: Icon(Icons.star), + label: 'お気に入り', + ), + ], + currentIndex: selectedIndex.value, + onTap: (value) { + selectedIndex.value = value; + }, + ), + ); + } +} diff --git a/lib/screen/start_page.dart b/lib/screen/start_page.dart index 0fd6014..28092e3 100644 --- a/lib/screen/start_page.dart +++ b/lib/screen/start_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:github_searcher_flutter/model/repository/auth_repository.dart'; -import 'package:github_searcher_flutter/screen/github_list_page.dart'; +import 'package:github_searcher_flutter/screen/root_page.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; class StartPage extends HookConsumerWidget { @@ -19,7 +19,7 @@ class StartPage extends HookConsumerWidget { theme: ThemeData( primarySwatch: Colors.blue, ), - home: const GithubListPage(), + home: const RootPage(), ); } }