From 6cdae5992de2b9865a3a05885e91338160243674 Mon Sep 17 00:00:00 2001 From: Felipe Erias Date: Fri, 12 Nov 2021 12:06:32 +0900 Subject: Home screen buttons navigate to the appropriate section --- lib/homescreen.dart | 12 ++++++++---- lib/page_home.dart | 43 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 47 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/homescreen.dart b/lib/homescreen.dart index 232c184..c81a2d5 100644 --- a/lib/homescreen.dart +++ b/lib/homescreen.dart @@ -17,6 +17,12 @@ class Homescreen extends StatefulWidget { class _HomescreenState extends State { int _selectedIndex = 0; + setNavigationIndex(int index) { + setState(() { + _selectedIndex = index; + }); + } + @override Widget build(BuildContext context) { var screenHeight = MediaQuery.of(context).size.height; @@ -35,9 +41,7 @@ class _HomescreenState extends State { // leading widget? // trailing widget does not expand to bottom onDestinationSelected: (int index) { - setState(() { - _selectedIndex = index; - }); + setNavigationIndex(index); }, selectedIconTheme: IconTheme.of(context).copyWith( size: iconSize, @@ -93,7 +97,7 @@ class _HomescreenState extends State { Widget _childForIndex(int selectedIndex) { switch (selectedIndex) { case 0: - return HomePage(); + return HomePage(onSetNavigationIndex: setNavigationIndex); case 1: return DashboardPage(); case 2: diff --git a/lib/page_home.dart b/lib/page_home.dart index 57b8e88..ede3e36 100644 --- a/lib/page_home.dart +++ b/lib/page_home.dart @@ -1,12 +1,47 @@ import 'package:flutter/material.dart'; class HomePage extends StatelessWidget { - // TODO placeholder + final Function(int index) onSetNavigationIndex; + + const HomePage({Key? key, required this.onSetNavigationIndex}) + : super(key: key); + @override Widget build(BuildContext context) { - return Text( - 'HOME', - style: Theme.of(context).textTheme.headline1, + final double spacing = MediaQuery.of(context).size.width / 32; + final double runSpacing = spacing / 2; + return Center( + child: Wrap( + spacing: spacing, + runSpacing: runSpacing, + children: [ + createItem(context, Icons.drive_eta, 1), + createItem(context, Icons.thermostat, 2), + createItem(context, Icons.music_note, 3) + ], + )); + } + + Widget createItem(BuildContext context, IconData icon, int tabPosition) { + final double size = MediaQuery.of(context).size.width / 6; + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: ElevatedButton( + style: ElevatedButton.styleFrom( + shape: CircleBorder(), + padding: EdgeInsets.all(size / 4), + primary: Colors.blue, + onPrimary: Colors.red, + ), + onPressed: () { + onSetNavigationIndex(tabPosition); + }, + child: Icon( + icon, + color: Colors.white, + size: size / 2, + ), + ), ); } } -- cgit 1.2.3-korg