From e723a70d15f5805844115d6f7bff83602932c684 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 25 Jun 2019 21:48:37 +1000 Subject: [PATCH] Add a 'login setings' form --- lib/login_settings.dart | 113 ++++++++++++++++++++++++++++++++++++++++ lib/settings.dart | 4 +- 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 lib/login_settings.dart diff --git a/lib/login_settings.dart b/lib/login_settings.dart new file mode 100644 index 00000000..fd19ab5c --- /dev/null +++ b/lib/login_settings.dart @@ -0,0 +1,113 @@ +import 'package:flutter/material.dart'; + + +class InvenTreeLoginSettingsWidget extends StatefulWidget { + + @override + _InvenTreeLoginSettingsState createState() => _InvenTreeLoginSettingsState(); +} + + +class _InvenTreeLoginSettingsState extends State { + + final GlobalKey _formKey = new GlobalKey(); + + String _addr; + String _user; + String _pass; + + String _validateServer(String value) { + + if (value.isEmpty) { + return 'Server cannot be empty'; + } + + return null; + } + + String _validateUsername(String value) { + if (value.isEmpty) { + return 'Username cannot be empty'; + } + + return null; + } + + String _validatePassword(String value) { + if (value.isEmpty) { + return 'Password cannot be empty'; + } + + return null; + } + + @override + Widget build(BuildContext context) { + + final Size screenSize = MediaQuery.of(context).size; + + return Scaffold( + appBar: AppBar( + title: Text("Login Settings"), + ), + body: new Container( + padding: new EdgeInsets.all(20.0), + child: new Form( + key: _formKey, + child: new ListView( + children: [ + Text("Server"), + new TextFormField( + decoration: InputDecoration( + hintText: "127.0.0.1:8000", + labelText: "Server:Port", + ), + validator: _validateServer, + onSaved: (String value) { + _addr = value; + }, + ), + Text("Login Details"), + TextFormField( + decoration: InputDecoration( + hintText: "Username", + labelText: "Username", + ), + validator: _validateUsername, + onSaved: (String value) { + _user = value; + } + ), + TextFormField( + obscureText: true, + decoration: InputDecoration( + hintText: "Password", + labelText: "Password", + ), + validator: _validatePassword, + onSaved: (String value) { + _pass = value; + }, + ), + Container( + width: screenSize.width, + child: RaisedButton( + child: Text("Login"), + onPressed: this.save, + ) + ) + ], + ) + ) + ) + ); + } + + void save() { + if (_formKey.currentState.validate()) { + _formKey.currentState.save(); + + // TODO - Save the login settings + } + } +} \ No newline at end of file diff --git a/lib/settings.dart b/lib/settings.dart index 38def43c..76212b66 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'login_settings.dart'; + class InvenTreeSettingsWidget extends StatefulWidget { // InvenTree settings view @@ -31,6 +33,6 @@ class _InvenTreeSettingsState extends State { } void _editServerSettings() { - + Navigator.push(context, MaterialPageRoute(builder: (context) => InvenTreeLoginSettingsWidget())); } } \ No newline at end of file