From 7b8bf06b0c0e80754e6e9faa1c2442f38983695b Mon Sep 17 00:00:00 2001 From: LeoLox <58687994+leo-lox@users.noreply.github.com> Date: Wed, 30 Oct 2024 11:45:17 +0100 Subject: [PATCH] login page setup --- .../routes/nostr/onboarding/onboarding.dart | 23 ++++- .../onboarding/onboarding_login_amber.dart | 59 ++++++++++++ .../onboarding/onboarding_login_select.dart | 89 +++++++++++++++++++ 3 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 lib/presentation_layer/routes/nostr/onboarding/onboarding_login_amber.dart create mode 100644 lib/presentation_layer/routes/nostr/onboarding/onboarding_login_select.dart diff --git a/lib/presentation_layer/routes/nostr/onboarding/onboarding.dart b/lib/presentation_layer/routes/nostr/onboarding/onboarding.dart index 2ea5c4a9..1432d37a 100644 --- a/lib/presentation_layer/routes/nostr/onboarding/onboarding.dart +++ b/lib/presentation_layer/routes/nostr/onboarding/onboarding.dart @@ -2,6 +2,7 @@ import 'package:camelus/presentation_layer/providers/onboarding_provider.dart'; import 'package:camelus/presentation_layer/routes/nostr/onboarding/onboarding_done.dart'; import 'package:camelus/presentation_layer/routes/nostr/onboarding/onboarding_follow_graph/onboarding_follow_graph.dart'; import 'package:camelus/presentation_layer/routes/nostr/onboarding/onboarding_login.dart'; +import 'package:camelus/presentation_layer/routes/nostr/onboarding/onboarding_login_amber.dart'; import 'package:camelus/presentation_layer/routes/nostr/onboarding/onboarding_name.dart'; import 'package:camelus/presentation_layer/routes/nostr/onboarding/onboarding_page01.dart'; import 'package:camelus/presentation_layer/routes/nostr/onboarding/onboarding_picture.dart'; @@ -9,6 +10,8 @@ import 'package:camelus/presentation_layer/routes/nostr/onboarding/onboarding_pr import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'onboarding_login_select.dart'; + class NostrOnboarding extends ConsumerStatefulWidget { const NostrOnboarding({super.key}); @@ -85,7 +88,7 @@ class _NostrOnboardingState extends ConsumerState ); _loginTabController = TabController( - length: 2, + length: 3, initialIndex: 0, vsync: this, ); @@ -118,8 +121,24 @@ class _NostrOnboardingState extends ConsumerState physics: pageLockLogin ? const NeverScrollableScrollPhysics() : null, children: [ + OnboardingLoginSelectPage( + onPressedAmberLogin: () { + _loginTabController.animateTo( + 2, + curve: Curves.easeInOut, + duration: const Duration(milliseconds: 500), + ); + }, + onPressedSeedPhraseLogin: () { + _loginTabController.animateTo( + 1, + curve: Curves.easeInOut, + duration: const Duration(milliseconds: 500), + ); + }, + ), OnboardingLoginPage(), - OnboardingLoginPage(), + OnboardingLoginAmberPage(), ], ), TabBarView( diff --git a/lib/presentation_layer/routes/nostr/onboarding/onboarding_login_amber.dart b/lib/presentation_layer/routes/nostr/onboarding/onboarding_login_amber.dart new file mode 100644 index 00000000..54da52f8 --- /dev/null +++ b/lib/presentation_layer/routes/nostr/onboarding/onboarding_login_amber.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +import '../../../../config/palette.dart'; + +class OnboardingLoginAmberPage extends ConsumerStatefulWidget { + const OnboardingLoginAmberPage({super.key}); + @override + ConsumerState createState() => + _OnboardingLoginAmberPageState(); +} + +class _OnboardingLoginAmberPageState + extends ConsumerState { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: null, + backgroundColor: Palette.background, + resizeToAvoidBottomInset: false, + body: SafeArea( + // input for the user to enter their private key, should be visible on a dark background. + child: Container( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(30), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox(height: 20), + SizedBox( + height: 200, + width: MediaQuery.of(context).size.width, + child: const Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "login", + style: TextStyle( + color: Palette.white, + fontSize: 40, + fontFamily: "Poppins", + ), + ), + ], + ), + ), + const Spacer( + flex: 1, + ) + ], + ), + ), + ), + ); + } +} diff --git a/lib/presentation_layer/routes/nostr/onboarding/onboarding_login_select.dart b/lib/presentation_layer/routes/nostr/onboarding/onboarding_login_select.dart new file mode 100644 index 00000000..22719cfd --- /dev/null +++ b/lib/presentation_layer/routes/nostr/onboarding/onboarding_login_select.dart @@ -0,0 +1,89 @@ +import 'package:flutter/material.dart'; + +import 'package:hooks_riverpod/hooks_riverpod.dart'; + +import '../../../../config/palette.dart'; +import '../../../atoms/long_button.dart'; + +class OnboardingLoginSelectPage extends ConsumerStatefulWidget { + final Function onPressedSeedPhraseLogin; + final Function onPressedAmberLogin; + + const OnboardingLoginSelectPage({ + super.key, + required this.onPressedSeedPhraseLogin, + required this.onPressedAmberLogin, + }); + @override + ConsumerState createState() => + _OnboardingLoginSelectPageState(); +} + +class _OnboardingLoginSelectPageState + extends ConsumerState { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: null, + backgroundColor: Palette.background, + resizeToAvoidBottomInset: false, + body: SafeArea( + // input for the user to enter their private key, should be visible on a dark background. + child: Container( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + padding: const EdgeInsets.all(30), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox(height: 20), + SizedBox( + height: 200, + width: MediaQuery.of(context).size.width, + child: const Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "login", + style: TextStyle( + color: Palette.white, + fontSize: 40, + fontFamily: "Poppins", + ), + ), + ], + ), + ), + const Spacer( + flex: 1, + ), + SizedBox( + width: MediaQuery.of(context).size.width, + height: 40, + child: longButton( + name: "amber login", + inverted: false, + onPressed: () => widget.onPressedAmberLogin(), + ), + ), + const SizedBox( + height: 20, + ), + SizedBox( + width: MediaQuery.of(context).size.width, + height: 40, + child: longButton( + name: "seed phrase login", + inverted: false, + onPressed: () => widget.onPressedSeedPhraseLogin(), + ), + ), + ], + ), + ), + ), + ); + } +}