diff --git a/.github/workflows/flutter_application_1/assign/lib/main.dart b/.github/workflows/flutter_application_1/assign/lib/main.dart index 4251d2ca8121df2e78b6a64409f05a194034248f..01ffce1771b8fb61ff9a5d67e731fd572210102f 100644 --- a/.github/workflows/flutter_application_1/assign/lib/main.dart +++ b/.github/workflows/flutter_application_1/assign/lib/main.dart @@ -1,5 +1,6 @@ import 'package:english_words/english_words.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; import 'package:provider/provider.dart'; void main() { @@ -46,13 +47,77 @@ class MyAppState extends ChangeNotifier { } } -class MyHomePage extends StatelessWidget { +class MyHomePage extends StatefulWidget { + @override + State<MyHomePage> createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State<MyHomePage> { + + var selectedIndex = 0; // ← Add this property. + + @override + Widget build(BuildContext context) { + Widget page; + switch (selectedIndex) { + case 0: + page = GeneratorPage(); + break; + case 1: + page = Placeholder(); + break; + default: + throw UnimplementedError('no widget for $selectedIndex'); + } + return LayoutBuilder( + builder: (context, constraints) { + return Scaffold( + body: Row( + children: [ + SafeArea( + child: NavigationRail( + extended: constraints.maxWidth >= 600, // ← Here. + destinations: [ + NavigationRailDestination( + icon: Icon(Icons.home), + label: Text('Home'), + ), + NavigationRailDestination( + icon: Icon(Icons.favorite), + label: Text('Favorites'), + ), + ], + selectedIndex: selectedIndex, // ← Change to this. + onDestinationSelected: (value) { + + // ↓ Replace print with this. + setState(() { + selectedIndex = value; + }); + + }, + ), + ), + Expanded( + child: Container( + color: Theme.of(context).colorScheme.primaryContainer, + child: page, //GeneratorPage(), + ), + ), + ], + ), + ); + } + ); + } +} + +class GeneratorPage extends StatelessWidget { @override Widget build(BuildContext context) { var appState = context.watch<MyAppState>(); var pair = appState.current; - // ↓ Add this. IconData icon; if (appState.favorites.contains(pair)) { icon = Icons.favorite; @@ -60,37 +125,32 @@ class MyHomePage extends StatelessWidget { icon = Icons.favorite_border; } - return Scaffold( - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - BigCard(pair: pair), - SizedBox(height: 10), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - - // ↓ And this. - ElevatedButton.icon( - onPressed: () { - appState.toggleFavorite(); - }, - icon: Icon(icon), - label: Text('Like'), - ), - SizedBox(width: 10), - - ElevatedButton( - onPressed: () { - appState.getNext(); - }, - child: Text('Next'), - ), - ], - ), - ], - ), + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + BigCard(pair: pair), + SizedBox(height: 10), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ElevatedButton.icon( + onPressed: () { + appState.toggleFavorite(); + }, + icon: Icon(icon), + label: Text('Like'), + ), + SizedBox(width: 10), + ElevatedButton( + onPressed: () { + appState.getNext(); + }, + child: Text('Next'), + ), + ], + ), + ], ), ); }