MobilePortal23/lib/register_page.dart

183 lines
5.9 KiB
Dart

//import 'dart:js_interop';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
//import 'package:mobile_portal_23/services/device_info.dart';
//import 'services/storage.dart' as storage;
import 'package:flutter_easyloading/flutter_easyloading.dart';
//import 'package:device_info_plus/device_info_plus.dart';
import 'services/storage.dart' as storage;
import 'dart:convert';
import 'classes/named_route_args.dart';
//import 'dart:developer';
class RegisterPage extends StatefulWidget {
const RegisterPage({Key? key}) : super(key: key);
static const routeName = '/register';
@override
State<RegisterPage> createState() => _RegisterPageState();
}
String appDomain = "iotechnic.eu";
class _RegisterPageState extends State<RegisterPage> {
final usernameTxtController = TextEditingController();
final passwordTxtController = TextEditingController();
//Map<String, dynamic> _deviceData = <String, dynamic>{};
// Eszköz regisztráció
Future deviceRegistration(String userName, String password) async {
storage.SecureStorage sc= storage.SecureStorage();
//final DeviceInfo deviceInfo =
/* _deviceData=
ModalRoute.of(context)!.settings.arguments as Map<String,dynamic>;*/
final args=ModalRoute.of(context)!.settings.arguments as DeviceArguments;
var url = "http://$appDomain/apiRegisterDevice";
var report = {
'deviceId': args.Id,
'username': userName,
'password': password,
'deviceType': '${args.Name} ${args.Brand}'
};
//log('data: $report');
final response = await http.post(
Uri.parse(url),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(report),
);
if (response.statusCode == 404) {
var resp = jsonDecode(response.body);
//log('resp:'+ resp['message']);
EasyLoading.showError(resp['message']);
Future.delayed(const Duration(seconds: 3), () {
// Navigator.pop(context); //pop dialog
EasyLoading.dismiss();
// Navigator.of(context).pop();
//_login();
});
}
if (response.statusCode == 200) {
var resp = jsonDecode(response.body);
if (resp['apiKey']==null)
{
EasyLoading.showError(resp['message']);
Future.delayed(const Duration(seconds: 3), () {
// Navigator.pop(context); //pop dialog
EasyLoading.dismiss();
});
}
else {
EasyLoading.showSuccess(resp['message']);
sc.writeSecureData("API", resp['apiKey']);
Future.delayed(const Duration(seconds: 3), () {
// Navigator.pop(context); //pop dialog
EasyLoading.dismiss();
Navigator.of(context).pop();
});
}
// _saveApiKey(resp['apiKey']);
//_login();
}
return false;
//return resp.map<EmployeeLs>((m) => EmployeeLs.fromJson(m)).toList();
}
@override
void dispose() {
// TODO: implement dispose
usernameTxtController.dispose();
passwordTxtController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: const Text("Eszköz regisztráció"),
),
body: SingleChildScrollView(
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 60.0),
child: Center(
child: SizedBox(
width: 200,
height: 150,
/*decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(50.0)),*/
child: Image.asset('assets/cloudlogo.png')),
),
),
Padding(
//padding: const EdgeInsets.only(left:15.0,right: 15.0,top:0,bottom: 0),
padding: const EdgeInsets.symmetric(horizontal: 15),
child: TextField(
controller: usernameTxtController,
decoration: const InputDecoration(
border: OutlineInputBorder(),
labelText: 'Teljes név',
hintText: 'Teljes név pl.: Gipsz Jakab'),
),
),
Padding(
padding: const EdgeInsets.only(
left: 15.0, right: 15.0, top: 15, bottom: 0),
//padding: EdgeInsets.symmetric(horizontal: 15),
child: TextField(
controller: passwordTxtController,
obscureText: true,
decoration: const InputDecoration(
border: OutlineInputBorder(),
labelText: 'Jelszó',
hintText: 'Adja meg KL portal jelszavát!'),
),
),
/* TextButton(
onPressed: (){
//TODO FORGOT PASSWORD SCREEN GOES HERE
},
child: const Text(
'Forgot Password',
style: TextStyle(color: Colors.blue, fontSize: 15),
),
),*/
const SizedBox(
width: 10,
),
Container(
height: 50,
width: 250,
decoration: BoxDecoration(
color: Colors.orange, borderRadius: BorderRadius.circular(20)),
child: TextButton(
onPressed: () {
if(usernameTxtController.text.isNotEmpty && passwordTxtController.text.isNotEmpty)
{ deviceRegistration(usernameTxtController.text, passwordTxtController.text);}
/*Navigator.pop(
context);*/
},
child: const Text(
'Belépés',
style: TextStyle(color: Colors.white, fontSize: 25),
),
),
),
],
),
),
);
}
}