diff --git a/Frontend/patient_manager/lib/components/homeTile.dart b/Frontend/patient_manager/lib/components/homeTile.dart index ebd989ae..1c76e100 100644 --- a/Frontend/patient_manager/lib/components/homeTile.dart +++ b/Frontend/patient_manager/lib/components/homeTile.dart @@ -1,9 +1,10 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/theme/mihTheme.dart'; -class HomeTile extends StatelessWidget { +class HomeTile extends StatefulWidget { final String tileName; - final String tileDescription; + //final String tileDescription; + final IconData tileIcon; final void Function() onTap; // final Widget tileIcon; @@ -11,54 +12,116 @@ class HomeTile extends StatelessWidget { super.key, required this.onTap, required this.tileName, - required this.tileDescription, + //required this.tileDescription, + required this.tileIcon, }); @override - Widget build(BuildContext context) { - return GestureDetector( - onTap: onTap, - child: Card( - color: MyTheme().secondaryColor(), - elevation: 20, - child: Column( - //mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: ListTile( - leading: Icon( - Icons.abc, - color: MyTheme().primaryColor(), - ), - title: Text( - tileName, - style: TextStyle( - fontWeight: FontWeight.bold, - color: MyTheme().primaryColor(), - ), - ), - subtitle: Text( - tileDescription, - style: TextStyle(color: MyTheme().primaryColor()), - )), - ), - Expanded( - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 10), - child: Icon( - Icons.arrow_forward, - color: MyTheme().secondaryColor(), - ), - ), - ], + State createState() => _HomeTileState(); +} + +class _HomeTileState extends State { + late Color mainC; + late Color secondC; + + @override + void initState() { + mainC = MyTheme().secondaryColor(); + secondC = MyTheme().primaryColor(); + super.initState(); + } + + Widget displayTile() { + return FittedBox( + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + GestureDetector( + onTap: widget.onTap, + onTapDown: (_) { + setState(() { + mainC = MyTheme().primaryColor(); + secondC = MyTheme().secondaryColor(); + }); + }, + onTapUp: (_) { + setState(() { + mainC = MyTheme().secondaryColor(); + secondC = MyTheme().primaryColor(); + }); + }, + child: Container( + padding: const EdgeInsets.all(3.0), + decoration: BoxDecoration( + color: mainC, + borderRadius: BorderRadius.circular(10.0), + //border: Border.all(color: MyTheme().secondaryColor(), width: 1.0), ), - ) - ], - ), + child: Icon( + widget.tileIcon, + color: secondC, + ), + ), + ), + const SizedBox(height: 1), + Text( + widget.tileName, + textAlign: TextAlign.center, + style: TextStyle( + color: MyTheme().secondaryColor(), + fontSize: 5.0, + fontWeight: FontWeight.bold, + ), + ) + ], ), ); } + + @override + Widget build(BuildContext context) { + return displayTile(); + // child: Card( + // color: MyTheme().secondaryColor(), + // elevation: 20, + // child: Column( + // //mainAxisSize: MainAxisSize.min, + // children: [ + // Expanded( + // child: ListTile( + // leading: Icon( + // widget.tileIcon, + // color: MyTheme().primaryColor(), + // ), + // title: Text( + // widget.tileName, + // style: TextStyle( + // fontWeight: FontWeight.bold, + // color: MyTheme().primaryColor(), + // ), + // ), + // subtitle: Text( + // widget.tileDescription, + // style: TextStyle(color: MyTheme().primaryColor()), + // )), + // ), + // Expanded( + // child: Row( + // mainAxisAlignment: MainAxisAlignment.end, + // children: [ + // Padding( + // padding: const EdgeInsets.symmetric(horizontal: 10), + // child: Icon( + // Icons.arrow_forward, + // color: MyTheme().secondaryColor(), + // ), + // ), + // ], + // ), + // ) + // ], + // ), + // ), + } } diff --git a/Frontend/patient_manager/lib/components/homeTileGrid.dart b/Frontend/patient_manager/lib/components/homeTileGrid.dart index 2ffd366e..5d1d1742 100644 --- a/Frontend/patient_manager/lib/components/homeTileGrid.dart +++ b/Frontend/patient_manager/lib/components/homeTileGrid.dart @@ -1,47 +1,57 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/components/homeTile.dart'; -class HomeTileGrid extends StatelessWidget { +class HomeTileGrid extends StatefulWidget { final String userEmail; const HomeTileGrid({super.key, required this.userEmail}); + @override + State createState() => _HomeTileGridState(); +} + +class _HomeTileGridState extends State { @override Widget build(BuildContext context) { - return Center( - child: SizedBox( - width: 1000, - child: GridView.count( - padding: const EdgeInsets.all(20), - crossAxisSpacing: 10, - mainAxisSpacing: 10, - childAspectRatio: MediaQuery.of(context).size.width / 600, - crossAxisCount: 3, - children: [ - HomeTile( - onTap: () { - //print("Home Tiles: $userEmail"); - Navigator.of(context) - .pushNamed('/patient-manager', arguments: userEmail); - }, - tileName: "Patient Manager", - tileDescription: - "This is a digital solution for doctors Offices to manage their patients", - ), - HomeTile( - onTap: () {}, - tileName: "Test", - tileDescription: - "This is a digital solution for doctors Offices to manage their patients", - ), - HomeTile( - onTap: () {}, - tileName: "Test 1", - tileDescription: - "This is a digital solution for doctors Offices to manage their patients", - ), - ], - ), - ), + var size = MediaQuery.of(context).size; + + double width = size.width; + double height = size.height; + // final double itemHeight = (size.height - kToolbarHeight - 24) / 2; + // final double itemWidth = size.width / 5; + List> tileList = [ + [ + Icons.medication, + "Patient Manager", + () { + Navigator.of(context) + .pushNamed('/patient-manager', arguments: widget.userEmail); + } + ], + [Icons.abc, "Test 1", () {}], + [Icons.abc, "Test 2", () {}], + [Icons.abc, "Test 3", () {}], + [Icons.abc, "Test 4", () {}], + [Icons.abc, "Test 5", () {}], + [Icons.abc, "Test 6", () {}], + ]; + + return GridView.builder( + padding: EdgeInsets.fromLTRB(width / 6, height / 16, width / 6, + 0), //EdgeInsets.symmetric(horizontal: width / 6), + itemCount: tileList.length, + gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( + maxCrossAxisExtent: 200), + //const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3), + itemBuilder: (context, index) { + return Padding( + padding: const EdgeInsets.all(10), + child: HomeTile( + onTap: tileList[index][2], + tileIcon: tileList[index][0], + tileName: tileList[index][1], + ), + ); + }, ); } }