diff --git a/lib/main.dart b/lib/main.dart index baa79be..0a92a1f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,11 +1,13 @@ import 'package:flutter/material.dart'; +import 'pages/login_page.dart'; + void main() { - runApp(const MyApp()); + runApp(const Application()); } -class MyApp extends StatelessWidget { - const MyApp({super.key}); +class Application extends StatelessWidget { + const Application({super.key}); @override Widget build(BuildContext context) { @@ -15,6 +17,7 @@ class MyApp extends StatelessWidget { colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, ), + home: const LoginPage(), ); } } diff --git a/lib/pages/login_page.dart b/lib/pages/login_page.dart new file mode 100644 index 0000000..a367a3b --- /dev/null +++ b/lib/pages/login_page.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +import '../services/db_helper.dart'; + +class LoginPage extends StatelessWidget { + const LoginPage({super.key}); + + @override + Widget build(BuildContext context) { + TextEditingController username = TextEditingController(); + return Scaffold( + body: Center( + child: Column( + children: [ + TextField( + controller: username, + decoration: const InputDecoration( + label: Text('Username'), + ), + ), + TextButton( + onPressed: () => DbHelper.login(username.text), + child: const Text('Login'), + ), + TextButton( + onPressed: () => DbHelper.logout(), + child: const Text('Logout'), + ) + ], + ), + ), + ); + } +} diff --git a/lib/services/db_helper.dart b/lib/services/db_helper.dart new file mode 100644 index 0000000..920a8fd --- /dev/null +++ b/lib/services/db_helper.dart @@ -0,0 +1,27 @@ +import 'package:shared_preferences/shared_preferences.dart'; + +class DbHelper { + static Future get _prefs async => + SharedPreferences.getInstance(); + + static void login(String username) async { + final prefs = await _prefs; + final String? savedUsername = prefs.getString('username'); + + if (savedUsername == null) { + await prefs.setString('username', username); + // TODO create new account + } else if (savedUsername == username) { + // TODO log into database + } else { + // TODO wrong username + } + } + + static void logout() async { + final prefs = await _prefs; + bool success = await prefs.remove('username'); + + //TODO log out on database + } +} diff --git a/pubspec.lock b/pubspec.lock index 3ece5f4..2736c0e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -128,6 +128,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" path: dependency: transitive description: @@ -176,6 +184,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.6" + provider: + dependency: "direct main" + description: + name: provider + sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f + url: "https://pub.dev" + source: hosted + version: "6.0.5" shared_preferences: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index e536217..c1da08c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -13,6 +13,7 @@ dependencies: cupertino_icons: ^1.0.2 shared_preferences: ^2.2.2 + provider: ^6.0.5 dev_dependencies: flutter_test: