From a5603f21f1f453391b63dce0a027ea34fef8eb4f Mon Sep 17 00:00:00 2001 From: Raktbastr Date: Mon, 3 Feb 2025 15:04:15 -0600 Subject: [PATCH] Add login page and basic event select page. --- assets/laserscouterlogo.png | Bin 0 -> 35302 bytes .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- lib/eventpicker.dart | 20 ++++ lib/login.dart | 95 ++++++++++++++++ lib/main.dart | 102 ++---------------- pubspec.lock | 16 +++ pubspec.yaml | 5 +- 7 files changed, 143 insertions(+), 97 deletions(-) create mode 100644 assets/laserscouterlogo.png create mode 100644 lib/eventpicker.dart create mode 100644 lib/login.dart diff --git a/assets/laserscouterlogo.png b/assets/laserscouterlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..0027836032d6c4a6fcbf08899dd3779585584e55 GIT binary patch literal 35302 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 kn*Z4Y|9^iEx84yckNsIhqf4X*|zW@LL literal 0 HcmV?d00001 diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 8e3ca5d..f08940f 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -51,7 +51,7 @@ _LoginPageState(); +} + +class _LoginPageState extends State { + final TextEditingController _teamNumberController = TextEditingController(); + final TextEditingController _apiKeyController = TextEditingController(); + + @override + void dispose() { + _teamNumberController.dispose(); + _apiKeyController.dispose(); + super.dispose(); + } + + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Login', style: TextStyle(color: Colors.white)), + backgroundColor: const Color.fromARGB(255, 19, 81, 179), + ), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset('assets/laserscouterlogo.png', height: 100), + const SizedBox(height: 16.0), + TextField( + controller: _teamNumberController, + decoration: const InputDecoration( + labelText: 'Team Number', + border: OutlineInputBorder(), + ), + ), + const SizedBox(height: 16.0), + TextField( + controller: _apiKeyController, + decoration: const InputDecoration( + labelText: 'TBA API Key', + border: OutlineInputBorder(), + ), + ), + const SizedBox(height: 16.0), + ElevatedButton( + onPressed: () async { + String teamNumber = _teamNumberController.text; + String apiKey = _apiKeyController.text; + Navigator.push( + context, + MaterialPageRoute(builder: (context) => EventPicker()), + ); + }, + child: const Text('Login'), + ), + ], + ), + ), + ); + } +} + diff --git a/lib/main.dart b/lib/main.dart index 7ac98a8..65e02f0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,110 +1,22 @@ import 'package:flutter/material.dart'; +import 'login.dart'; void main() { - runApp(const MyApp()); + runApp(MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); - // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Laser Scouter', - theme: ThemeData(fontFamily: 'Ocraextended', - colorScheme: ColorScheme.fromSeed(seedColor: Colors.blueAccent), - useMaterial3: true, + theme: ThemeData( + primarySwatch: Colors.blue, + fontFamily: 'Ocraextended', ), - home: const MyHomePage(title: 'Laser Scouter'), + home: LoginPage(), ); } -} - -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 _counter = 0; - - void _incrementCounter() { - setState(() { - // This call to setState tells the Flutter framework that something has - // changed in this State, which causes it to rerun the build method below - // so that the display can reflect the updated values. If we changed - // _counter without calling setState(), then the build method would not be - // called again, and so nothing would appear to happen. - _counter++; - }); - } - - @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), - ), - body: Center( - // Center is a layout widget. It takes a single child and positions it - // in the middle of the parent. - child: Column( - // Column is also a layout widget. It takes a list of children and - // arranges them vertically. By default, it sizes itself to fit its - // children horizontally, and tries to be as tall as its parent. - // - // Column has various properties to control how it sizes itself and - // how it positions its children. Here we use mainAxisAlignment to - // center the children vertically; the main axis here is the vertical - // axis because Columns are vertical (the cross axis would be - // horizontal). - // - // TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint" - // action in the IDE, or press "p" in the console), to see the - // wireframe for each widget. - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text( - 'You have pushed the button this many times:', - ), - Text( - '$_counter', - style: Theme.of(context).textTheme.headlineMedium, - ), - ], - ), - ), - floatingActionButton: FloatingActionButton( - onPressed: _incrementCounter, - tooltip: 'Increment', - child: const Icon(Icons.add), - ), // This trailing comma makes auto-formatting nicer for build methods. - ); - } -} +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 55f1d09..11b7b1c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -131,6 +131,22 @@ packages: description: flutter source: sdk version: "0.0.0" + http: + dependency: "direct main" + description: + name: http + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" + url: "https://pub.dev" + source: hosted + version: "0.13.6" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" image: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 91c34f9..1353986 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,6 +36,8 @@ dependencies: cupertino_icons: ^1.0.8 flutter_launcher_icons: ^0.14.3 + http: ^0.13.4 + dev_dependencies: flutter_test: sdk: flutter @@ -59,7 +61,8 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: + assets: + - assets/laserscouterlogo.png # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg