import 'package:flutter/material.dart'; import 'package:mileograph_flutter/services/apiService.dart'; import 'package:mileograph_flutter/services/authservice.dart'; import 'package:provider/provider.dart'; import 'components/login/login.dart'; void main() { runApp( MultiProvider( providers: [ Provider( create: (_) => ApiService(baseUrl: 'https://dev.mileograph.co.uk/api/v1'), ), ChangeNotifierProvider( create: (context) => AuthService(api: context.read()), ), ], child: MyApp(), ), ); } class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context) { final auth = context.read(); Widget fullPage; Widget subPage; if (!auth.isLoggedIn) { fullPage = LoginPage(); } else { fullPage = MyHomePage(title: "Mileograph"); } return MaterialApp( title: 'Flutter Demo', theme: ThemeData( // This is the theme of your application. // // TRY THIS: Try running your application with "flutter run". You'll see // the application has a purple toolbar. Then, without quitting the app, // try changing the seedColor in the colorScheme below to Colors.green // and then invoke "hot reload" (save your changes or press the "hot // reload" button in a Flutter-supported IDE, or press "r" if you used // the command line to start the app). // // Notice that the counter didn't reset back to zero; the application // state is not lost during the reload. To reset the state, use hot // restart instead. // // This works for code too, not just values: Most code changes can be // tested with just a hot reload. colorScheme: ColorScheme.fromSeed(seedColor: Colors.blueGrey), ), darkTheme: ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: Colors.blueGrey, brightness: Brightness.dark, ), ), themeMode: ThemeMode.system, home: const MyHomePage(title: 'Mile-O-Graph'), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); // This widget is the home page of your application. It is stateful, meaning // that it has a State object (defined below) that contains fields that affect // how it looks. // This class is the configuration for the state. It holds the values (in this // case the title) provided by the parent (in this case the App widget) and // used by the build method of the State. Fields in a Widget subclass are // always marked "final". final String title; @override State createState() => _MyHomePageState(); } class _MyHomePageState extends State { int pageIndex = 0; bool loggedIn = false; @override Widget build(BuildContext context) { // This method is rerun every time setState is called, for instance as done // by the _incrementCounter method above. // // The Flutter framework has been optimized to make rerunning build methods // fast, so that you can just rebuild anything that needs updating rather // than having to individually change instances of widgets. return Scaffold( appBar: AppBar( // TRY THIS: Try changing the color here to a specific color (to // Colors.amber, perhaps?) and trigger a hot reload to see the AppBar // change color while the other colors stay the same. backgroundColor: Theme.of(context).colorScheme.inversePrimary, // Here we take the value from the MyHomePage object that was created by // the App.build method, and use it to set our appbar title. title: Text(widget.title), leading: IconButton(onPressed: null, icon: Icon(Icons.menu)), actions: [ IconButton(onPressed: null, icon: Icon(Icons.account_circle)), IconButton(onPressed: null, icon: Icon(Icons.settings)), ], ), bottomNavigationBar: NavigationBar( selectedIndex: pageIndex, onDestinationSelected: (int index) { setState(() { pageIndex = index; }); }, destinations: [ NavigationDestination(icon: Icon(Icons.home), label: "Home"), NavigationDestination(icon: Icon(Icons.list), label: "Entries"), NavigationDestination(icon: Icon(Icons.train), label: "Traction"), NavigationDestination(icon: Icon(Icons.route), label: "Trips"), NavigationDestination( icon: Icon(Icons.account_circle), label: "User", ), ], ), body: Dashboard(), floatingActionButton: FloatingActionButton( onPressed: null, tooltip: 'New Entry', child: const Icon(Icons.add), ), // This trailing comma makes auto-formatting nicer for build methods. ); } } class Dashboard extends StatelessWidget { Dashboard({super.key}); Widget build(BuildContext context) { return Text("Logged in"); } }