From af93f519d5a9d4541fdafd74812903b0b8154889 Mon Sep 17 00:00:00 2001 From: Hank Grabowski Date: Sat, 28 Jan 2023 15:18:18 -0800 Subject: [PATCH] Add password/show hide capability. --- lib/screens/sign_in.dart | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/screens/sign_in.dart b/lib/screens/sign_in.dart index 03f0d12..b459bad 100644 --- a/lib/screens/sign_in.dart +++ b/lib/screens/sign_in.dart @@ -17,6 +17,7 @@ class _SignInScreenState extends State { final formKey = GlobalKey(); final usernameController = TextEditingController(); final passwordController = TextEditingController(); + var hidePassword = true; @override void initState() { @@ -35,7 +36,7 @@ class _SignInScreenState extends State { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( - title: Text('Sign In'), + title: const Text('Sign In'), ), body: Padding( padding: const EdgeInsets.all(20.0), @@ -53,7 +54,7 @@ class _SignInScreenState extends State { ? null : 'Not a valid Friendica Account Address', decoration: InputDecoration( - prefixIcon: Icon(Icons.alternate_email), + prefixIcon: const Icon(Icons.alternate_email), hintText: 'Username (user@example.com)', border: OutlineInputBorder( borderSide: BorderSide( @@ -66,10 +67,20 @@ class _SignInScreenState extends State { ), const VerticalPadding(), TextFormField( - obscureText: true, + obscureText: hidePassword, controller: passwordController, decoration: InputDecoration( - prefixIcon: Icon(Icons.password), + prefixIcon: const Icon(Icons.password), + suffixIcon: IconButton( + onPressed: () { + setState(() { + hidePassword = !hidePassword; + }); + }, + icon: hidePassword + ? const Icon(Icons.remove_red_eye_outlined) + : const Icon(Icons.remove_red_eye), + ), hintText: 'Password', border: OutlineInputBorder( borderSide: BorderSide( @@ -83,7 +94,7 @@ class _SignInScreenState extends State { const VerticalPadding(), ElevatedButton( onPressed: () => _signIn(context), - child: Text('Signin'), + child: const Text('Signin'), ), ], ),