From 28eba7d9ab176607bcc86456d1aae67019248aa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Caras?= Date: Mon, 12 Sep 2022 16:49:42 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20p=C5=99idat=20v=C3=BDb=C4=9Br=20z=20fun?= =?UTF-8?q?k=C4=8Dn=C3=ADch=20instanc=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 81 ++++++++++++++++++++++++++++----------------------- lib/util.dart | 5 ++++ 2 files changed, 49 insertions(+), 37 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 84357e2..0cd28cb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -179,6 +179,8 @@ class _LoginPageState extends State { TextEditingController passControl = TextEditingController(); TextEditingController canteenControl = TextEditingController(); bool rememberMe = false; + bool _showUrl = false; + String dropdownUrl = instance.first["url"] ?? ""; @override void initState() { @@ -301,12 +303,39 @@ class _LoginPageState extends State { controller: passControl, obscureText: true, ), - TextField( - autofillHints: const [AutofillHints.url], - decoration: InputDecoration( - labelText: Languages.of(context)!.iCanteenUrl), - keyboardType: TextInputType.url, - controller: canteenControl, + const SizedBox( + height: 10, + ), + DropdownButton( + isExpanded: true, + value: dropdownUrl, + items: instance.map>((e) { + return DropdownMenuItem( + value: e["url"], + child: Text(e["name"]!), + ); + }).toList(), + onChanged: (String? value) { + setState(() { + if (value == "") { + _showUrl = true; + } else { + _showUrl = false; + } + dropdownUrl = value!; + }); + }, + ), + AnimatedOpacity( + opacity: _showUrl ? 1.0 : 0.0, + duration: const Duration(milliseconds: 300), + child: TextField( + autofillHints: const [AutofillHints.url], + decoration: InputDecoration( + labelText: Languages.of(context)!.iCanteenUrl), + keyboardType: TextInputType.url, + controller: canteenControl, + ), ), Row(mainAxisAlignment: MainAxisAlignment.center, children: [ Switch( @@ -320,36 +349,14 @@ class _LoginPageState extends State { ]), TextButton( onPressed: () async { - if (canteenControl.text.contains("http://")) { - // kontrolujeme šifrované spojení - var d = await showDialog( - context: context, - builder: (c) => AlertDialog( - title: Text(Languages.of(context)!.warning), - content: SingleChildScrollView( - child: Text( - Languages.of(context)!.httpLogin)), - actions: [ - TextButton( - onPressed: () => - Navigator.pop(c, true), - child: - Text(Languages.of(context)!.yes)), - TextButton( - onPressed: () => - Navigator.pop(c, false), - child: Text( - Languages.of(context)!.noChange)) - ], - )); - if (!d!) return; + var canteenUrl = (dropdownUrl == "") + ? canteenControl.text + : dropdownUrl; + if (!canteenUrl.startsWith("https://") && + !canteenUrl.startsWith("http://")) { + canteenUrl = "https://$canteenUrl"; } - if (!canteenControl.text.startsWith("https://") && - !canteenControl.text.startsWith("http://")) { - canteenControl.text = - "https://${canteenControl.text}"; - } - var canteen = Canteen(canteenControl.text); + var canteen = Canteen(canteenUrl); try { var l = await canteen.login( userControl.text, passControl.text); @@ -365,8 +372,8 @@ class _LoginPageState extends State { return; } if (rememberMe) { - LoginManager.setDetails(userControl.text, - passControl.text, canteenControl.text); + LoginManager.setDetails( + userControl.text, passControl.text, canteenUrl); } // souhlas const storage = FlutterSecureStorage(); diff --git a/lib/util.dart b/lib/util.dart index 1eccf9f..adc34fa 100644 --- a/lib/util.dart +++ b/lib/util.dart @@ -90,3 +90,8 @@ DateTime casNaDate(TimeOfDay c) { return DateTime.parse( "${now.year}-${(now.month < 10 ? "0" : "") + now.month.toString()}-${(now.day < 10 ? "0" : "") + now.day.toString()} ${(c.hour < 10 ? "0" : "") + c.hour.toString()}:${(c.minute < 10 ? "0" : "") + c.minute.toString()}:00"); } + +List> instance = [ + {"name": "SŠTE Brno, Olomoucká", "url": "https://stravovani.sstebrno.cz"}, + {"name": "Jiné", "url": ""} +];