import 'package:aitrainer_app/view/customer_modify_page.dart'; import 'package:aitrainer_app/view/customer_new_page.dart'; import 'package:aitrainer_app/view/exercise_new_page.dart'; import 'package:aitrainer_app/view/exercise_type_modify_page.dart'; import 'package:aitrainer_app/view/exercise_type_new_page.dart'; import 'package:aitrainer_app/viewmodel/exercise_changing_view_model.dart'; import 'package:flutter/material.dart'; import 'package:aitrainer_app/view/customer_list_page.dart'; import 'package:aitrainer_app/view/exercise_type_list_page.dart'; import 'package:aitrainer_app/widgets/nav_drawer.dart'; import 'package:provider/provider.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; void main() { runApp( ChangeNotifierProvider( // Initialize the model in the builder. That way, Provider // can own Models's lifecycle, making sure to call `dispose` // when not needed anymore. create: (context) => ExerciseChangingViewModel(null), child: AitrainerApp(), ), ); } class AitrainerApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( localizationsDelegates: [ // ... app-specific localization delegate[s] here GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: [ const Locale('en'), // English const Locale('hu'), // Hungarian // ... other locales the app supports ], routes: { 'home': (context) => AitrainerHome(), 'customersPage': (context) => CustomerListPage(), 'customerNewPage': (context) => CustomerNewPage(), 'customerModifyPage': (context) => CustomerModifyPage(), 'exerciseTypeListPage': (context) => ExerciseTypeListPage(), 'exerciseTypeNewPage': (context) => ExerciseTypeNewPage(), 'exerciseTypeModifyPage': (context) => ExerciseTypeModifyPage(), 'exerciseNewPage': (context) => ExerciseNewPage(), }, initialRoute: 'home', title: 'Aitrainer Demo', theme: ThemeData( primarySwatch: Colors.green, ), home: AitrainerHome(), ); } } class AitrainerHome extends StatelessWidget { final _biggerFont = const TextStyle(fontSize: 24.0, color: Color.fromRGBO(94, 123, 122, 0.9)); @override Widget build(BuildContext context) { return Scaffold( drawer: NavDrawer(), appBar: AppBar( title: Text('Menu'), ), body: Center( child: Text( 'Welcome to the AITRAINER', style: _biggerFont), ), ); } } /* class CustomerScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( drawer: NavDrawer(), appBar: AppBar( title: Text('Customers'), ), body: Center( child: CustomerListPage(), ), ); } } */ /* class AitrainerApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: "AITRAINER customers", home: ChangeNotifierProvider( create: (context) => CustomerListViewModel(), child: CustomerListPage(), ) ); } } */ /* // #docregion MyApp class MyApp extends StatelessWidget { // #docregion build @override Widget build(BuildContext context) { return MaterialApp( title: 'Startup Name Generator', theme: ThemeData( // Add the 3 lines from here... primaryColor: Colors.white, ), home: RandomWords(), ); } // #enddocregion build } // #enddocregion MyApp // #docregion RWS-var class RandomWordsState extends State { final _suggestions = []; final _biggerFont = const TextStyle(fontSize: 18.0); final Set _saved = Set(); // #enddocregion RWS-var // #docregion _buildSuggestions Widget _buildSuggestions() { return ListView.builder( padding: const EdgeInsets.all(16.0), itemBuilder: /*1*/ (context, i) { if (i.isOdd) return Divider(); /*2*/ final index = i ~/ 2; /*3*/ if (index >= _suggestions.length) { _suggestions.addAll(generateWordPairs().take(10)); /*4*/ } return _buildRow(_suggestions[index]); }); } // #enddocregion _buildSuggestions // #docregion _buildRow Widget _buildRow(WordPair pair) { final bool alreadySaved = _saved.contains(pair); return ListTile( title: Text( pair.asPascalCase, style: _biggerFont, ), trailing: Icon( // Add the lines from here... alreadySaved ? Icons.favorite : Icons.favorite_border, color: alreadySaved ? Colors.red : null, ), onTap: () { // Add 9 lines from here... setState(() { if (alreadySaved) { _saved.remove(pair); } else { _saved.add(pair); } }); }, ); } // #enddocregion _buildRow // #docregion RWS-build @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Startup Name Generator'), actions: [ // Add 3 lines from here... IconButton(icon: Icon(Icons.list), onPressed: _pushSaved), ], ), body: _buildSuggestions(), ); } void _pushSaved() { Navigator.of(context).push( MaterialPageRoute( // Add 20 lines from here... builder: (BuildContext context) { final Iterable tiles = _saved.map( (WordPair pair) { return ListTile( title: Text( pair.asPascalCase, style: _biggerFont, ), ); }, ); final List divided = ListTile .divideTiles( context: context, tiles: tiles, ).toList(); return Scaffold( // Add 6 lines from here... appBar: AppBar( title: Text('Saved Suggestions'), ), body: ListView(children: divided), ); }, ), ); } // #enddocregion RWS-build // #docregion RWS-var } // #enddocregion RWS-var class RandomWords extends StatefulWidget { @override RandomWordsState createState() => new RandomWordsState(); } */