From 8c262e2a7dcffffe84509fbd88991c6ec5df0bfc Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Wed, 16 Jan 2019 22:09:57 +0100 Subject: [PATCH] OnBoarding Git Url: Move to its own file This onboarding file is getting too huge --- lib/screens/onboarding_git_url.dart | 92 +++++++++++++++++++++++++++++ lib/screens/onboarding_screens.dart | 92 +---------------------------- 2 files changed, 94 insertions(+), 90 deletions(-) create mode 100644 lib/screens/onboarding_git_url.dart diff --git a/lib/screens/onboarding_git_url.dart b/lib/screens/onboarding_git_url.dart new file mode 100644 index 00000000..557b780d --- /dev/null +++ b/lib/screens/onboarding_git_url.dart @@ -0,0 +1,92 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class OnBoardingGitUrl extends StatefulWidget { + final Function doneFunction; + + OnBoardingGitUrl({@required this.doneFunction}); + + @override + OnBoardingGitUrlState createState() { + return new OnBoardingGitUrlState(); + } +} + +class OnBoardingGitUrlState extends State { + final GlobalKey> sshUrlKey = + GlobalKey>(); + + @override + Widget build(BuildContext context) { + final _formKey = GlobalKey(); + final inputFormFocus = FocusNode(); + + final formSubmitted = () { + if (_formKey.currentState.validate()) { + _formKey.currentState.save(); + + var url = sshUrlKey.currentState.value; + this.widget.doneFunction(url); + inputFormFocus.unfocus(); + } + }; + + var inputForm = Form( + key: _formKey, + child: TextFormField( + key: sshUrlKey, + textAlign: TextAlign.center, + autofocus: true, + style: Theme.of(context).textTheme.title, + decoration: const InputDecoration( + hintText: 'Eg: git@github.com:GitJournal/GitJournal.git', + ), + validator: (value) { + if (value.isEmpty) { + return 'Please enter some text'; + } + if (value.startsWith('https://') || value.startsWith('http://')) { + return 'Only SSH urls are currently accepted'; + } + + RegExp regExp = new RegExp(r"[a-zA-Z0-9.]+@[a-zA-Z0-9.]+:.+"); + if (!regExp.hasMatch(value)) { + return "Invalid Input"; + } + }, + focusNode: inputFormFocus, + textInputAction: TextInputAction.done, + onFieldSubmitted: (String _) => formSubmitted(), + ), + ); + + return Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + 'Enter the Git SSH URL', + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.display1, + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: new Container( + color: Theme.of(context).primaryColorLight, + child: inputForm, + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: RaisedButton( + child: Text("Next"), + onPressed: formSubmitted, + ), + ) + ], + ); + } +} diff --git a/lib/screens/onboarding_screens.dart b/lib/screens/onboarding_screens.dart index 14200ee5..9ebaee12 100644 --- a/lib/screens/onboarding_screens.dart +++ b/lib/screens/onboarding_screens.dart @@ -11,6 +11,8 @@ import 'package:journal/analytics.dart'; import 'package:journal/state_container.dart'; import 'package:journal/storage/git.dart'; +import 'package:journal/screens/onboarding_git_url.dart'; + class OnBoardingScreen extends StatefulWidget { final Function onBoardingCompletedFunction; @@ -395,96 +397,6 @@ class OnBoardingCreateRepo extends StatelessWidget { } } -class OnBoardingGitUrl extends StatefulWidget { - final Function doneFunction; - - OnBoardingGitUrl({@required this.doneFunction}); - - @override - OnBoardingGitUrlState createState() { - return new OnBoardingGitUrlState(); - } -} - -class OnBoardingGitUrlState extends State { - final GlobalKey> sshUrlKey = - GlobalKey>(); - - @override - Widget build(BuildContext context) { - final _formKey = GlobalKey(); - final inputFormFocus = FocusNode(); - - final formSubmitted = () { - if (_formKey.currentState.validate()) { - _formKey.currentState.save(); - - var url = sshUrlKey.currentState.value; - this.widget.doneFunction(url); - inputFormFocus.unfocus(); - } - }; - - var inputForm = Form( - key: _formKey, - child: TextFormField( - key: sshUrlKey, - textAlign: TextAlign.center, - autofocus: true, - style: Theme.of(context).textTheme.title, - decoration: const InputDecoration( - hintText: 'Eg: git@github.com:GitJournal/GitJournal.git', - ), - validator: (value) { - if (value.isEmpty) { - return 'Please enter some text'; - } - if (value.startsWith('https://') || value.startsWith('http://')) { - return 'Only SSH urls are currently accepted'; - } - - RegExp regExp = new RegExp(r"[a-zA-Z0-9.]+@[a-zA-Z0-9.]+:.+"); - if (!regExp.hasMatch(value)) { - return "Invalid Input"; - } - }, - focusNode: inputFormFocus, - textInputAction: TextInputAction.done, - onFieldSubmitted: (String _) => formSubmitted(), - ), - ); - - return Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: Text( - 'Enter the Git SSH URL', - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.display1, - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: new Container( - color: Theme.of(context).primaryColorLight, - child: inputForm, - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: RaisedButton( - child: Text("Next"), - onPressed: formSubmitted, - ), - ) - ], - ); - } -} - class OnBoardingSshKey extends StatelessWidget { final Function doneFunction; final String publicKey;