import 'package:flutter/material.dart'; import 'package:physigo/Services/AuthService.dart'; //Fields.. TextEditingController _name = TextEditingController(); TextEditingController _surname = TextEditingController(); TextEditingController _mail = TextEditingController(); TextEditingController _phoneNumber = TextEditingController(); TextEditingController _username = TextEditingController(); TextEditingController _passwd = TextEditingController(); TextEditingController _passwd2 = TextEditingController(); bool anonymous = false; String? _dateString; class SignupPage extends StatefulWidget { const SignupPage({Key? key}) : super(key: key); @override State createState() => _SignupPageState(); } class _SignupPageState extends State { int _pageIndex = 0; List forms = [ SignupForm1( title: '', ), SignupForm2( title: '', ), SignupForm3( title: '', ) ]; void _updatePageIndex(int newPageIndex) { if (newPageIndex == -1) { Navigator.pushNamed(context, '/'); } else if (newPageIndex == 3) { //autentification //Navigator.pop(context); newPageIndex == 2; } else { setState(() { _pageIndex = newPageIndex; }); } } @override Widget build(BuildContext context) { return Scaffold( floatingActionButton: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ FloatingActionButton( heroTag: "btn1", child: Icon(Icons.navigate_before_outlined), onPressed: () => _updatePageIndex(_pageIndex - 1)), SizedBox( width: 25, ), FloatingActionButton( heroTag: "btn2", child: Icon(Icons.navigate_next_outlined), onPressed: () => _updatePageIndex(_pageIndex + 1)) ], ), body: Center(child: forms[_pageIndex]), ); } } class SignupForm1 extends StatefulWidget { const SignupForm1({Key? key, required this.title}) : super(key: key); final String title; @override //_RegisterScreen createState() => _RegisterScreen(); State createState() => _SignupForm1(); } class _SignupForm1 extends State { DateTime? _dateTime; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Register Screen'), ), body: Center( child: SizedBox( width: 300, child: Column(children: [ const SizedBox(height: 30), Text( 'Personal Information', style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold), ), const SizedBox(height: 30), Image.asset( 'assets/user.png', width: 150, ), const SizedBox(height: 30), TextFormField( controller: _name, decoration: InputDecoration( hintText: 'Name', ), ), const SizedBox(height: 10), TextFormField( controller: _surname, decoration: InputDecoration( hintText: 'Surname', ), ), const SizedBox(height: 10), Row(children: [ Text(_dateString == null ? 'Select birthday date :' : _dateString.toString()), const SizedBox(width: 49), ElevatedButton( onPressed: () { showDatePicker( context: context, initialDate: DateTime.now(), firstDate: DateTime(1900), lastDate: DateTime.now()) .then((date) { setState(() { _dateTime = date!; _dateString = "${date.day}-${date.month}-${date.year}"; }); }); }, child: const Text('Select date'), ), ]), const SizedBox(height: 10), ]), )), ); } } class SignupForm2 extends StatefulWidget { const SignupForm2({Key? key, required this.title}) : super(key: key); final String title; @override //_RegisterScreen createState() => _RegisterScreen(); State createState() => _SignupForm2(); } class _SignupForm2 extends State { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Register Screen'), ), body: Center( child: SizedBox( width: 300, child: Column(children: [ const SizedBox(height: 30), Text( 'Contact Details', style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold), ), const SizedBox(height: 30), Image.asset( 'assets/communicate.png', width: 150, ), const SizedBox(height: 30), TextFormField( controller: _mail, decoration: InputDecoration( hintText: 'Mail', ), ), const SizedBox(height: 10), TextFormField( controller: _phoneNumber, decoration: InputDecoration( hintText: 'Phone Number', ), ), const SizedBox(height: 10), Row(children: [ Text('Anonymous'), Checkbox( checkColor: Colors.white, value: anonymous, onChanged: (bool? value) { setState(() { anonymous = value!; }); }, ), ]), const SizedBox(height: 10), ]), )), ); } } class SignupForm3 extends StatefulWidget { const SignupForm3({Key? key, required this.title}) : super(key: key); final String title; @override //_RegisterScreen createState() => _RegisterScreen(); State createState() => _SignupForm3(); } class _SignupForm3 extends State { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Register Screen'), ), body: Center( child: SizedBox( width: 300, child: Column(children: [ const SizedBox(height: 30), Text( 'User details', style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold), ), const SizedBox(height: 30), Image.asset( 'assets/id-card.png', width: 150, ), const SizedBox(height: 30), TextFormField( controller: _username, decoration: InputDecoration( hintText: 'Username', ), ), const SizedBox(height: 10), TextFormField( controller: _passwd, obscureText: true, enableSuggestions: false, autocorrect: false, decoration: InputDecoration( hintText: 'Password', ), ), const SizedBox(height: 10), TextFormField( controller: _passwd2, obscureText: true, enableSuggestions: false, autocorrect: false, decoration: InputDecoration( hintText: 'Repeat password', ), ), const SizedBox(height: 15), ElevatedButton( onPressed: () { try { if (_passwd.text == _passwd2.text) { createUser(); Navigator.pop(context); } else { print("passwd is not the same"); } } catch (e) { print(e.toString()); } }, child: const Text('Finish Register')), ]), )), ); } void createUser() async { dynamic result = await AuthenticationServices.createNewUser(anonymous, _dateString.toString(), _name.text, _mail.text, _passwd.text, _phoneNumber.text, _username.text, _surname.text); if (result == null) { print('mail not valid'); } else { //print(result.toString()); //[51.787378° N, 19.449455° E] print(' anonymous: ' + anonymous.toString() + ' birthdate: ' + _dateString.toString() + ' createDate: ' + DateTime.now().toString()+ ' last_challenge_data: ' + 'null'+ ' mail: ' + _mail.text + ' name: ' + _name.text + ' passwd: ' + '??? ' + ' phone_number: ' + _phoneNumber.text+ ' shared_id: ' + _username.text + ' surname: ' + _surname.text + ' totalpoints: 0 ' + ' update_date: ' + DateTime.now().toString()+ ' weeklyplace: ' + 'null'); _name.clear(); _surname.clear(); _mail.clear(); _phoneNumber.clear(); _username.clear(); _passwd.clear(); _passwd2.clear(); } } }