Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
448 righe
21 KiB
448 righe
21 KiB
import 'package:flutter/material.dart'; |
|
import 'package:hexcolor/hexcolor.dart'; |
|
import 'package:idrocap/private/model/userList.dart'; |
|
import 'package:idrocap/private/notifiche.dart'; |
|
|
|
import '../utility/utility.dart'; |
|
import 'constant/globals.dart' as globals; |
|
import 'widget/menu.dart'; |
|
|
|
class ProfileUser extends StatefulWidget { |
|
final UserList userList; |
|
|
|
ProfileUser({super.key, required this.userList}); |
|
|
|
@override |
|
State<ProfileUser> createState() => _ProfileUserState(); |
|
} |
|
|
|
class _ProfileUserState extends State<ProfileUser> { |
|
String searchString = ""; |
|
@override |
|
void initState() { |
|
super.initState(); |
|
} |
|
|
|
@override |
|
Widget build(BuildContext context) { |
|
return PopScope( |
|
canPop: true, |
|
child: Scaffold( |
|
appBar: AppBar( |
|
leading: InkWell( |
|
onTap: () { |
|
Navigator.pop(context); |
|
}, |
|
child: Icon( |
|
Icons.arrow_back_ios, |
|
color: Colors.white, |
|
), |
|
), |
|
automaticallyImplyLeading: true, |
|
iconTheme: IconThemeData(color: Colors.white), |
|
backgroundColor: HexColor(globals.colorAppbar), |
|
title: Center( |
|
child: Text( |
|
"Utenti", |
|
style: TextStyle(color: Colors.white), |
|
), |
|
), |
|
actions: [ |
|
IconButton( |
|
onPressed: () { |
|
Navigator.push(context, |
|
MaterialPageRoute(builder: (context) => Notifiche())); |
|
}, |
|
icon: Icon(Icons.notifications), |
|
) |
|
], |
|
), |
|
drawer: Menu(), |
|
body: SingleChildScrollView( |
|
child: Column( |
|
children: [ |
|
Padding( |
|
padding: EdgeInsets.all(8), |
|
child: Container( |
|
color: HexColor(globals.coloreCardProfili), |
|
child: Wrap(children: [ |
|
ListTile( |
|
leading: Icon( |
|
Icons.account_circle_outlined, |
|
size: 50, |
|
color: Colors.white, |
|
), |
|
title: Wrap( |
|
children: [ |
|
Text( |
|
widget.userList.surname + |
|
" " + |
|
widget.userList.name, |
|
style: TextStyle(color: Colors.white)), |
|
], |
|
), |
|
subtitle: Wrap( |
|
children: [ |
|
Text( |
|
widget.userList.organisation_description + |
|
" " + |
|
widget.userList.name, |
|
style: TextStyle(color: Colors.white), |
|
), |
|
], |
|
), |
|
), |
|
])), |
|
), |
|
Padding( |
|
padding: EdgeInsets.all(5), |
|
child: Card( |
|
elevation: 20, |
|
child: Column( |
|
children: [ |
|
Container( |
|
decoration: BoxDecoration( |
|
borderRadius: BorderRadius.only( |
|
topRight: Radius.circular(10), |
|
topLeft: Radius.circular(10)), |
|
color: HexColor(globals.colorAppbar), |
|
), |
|
child: ListTile( |
|
title: Wrap( |
|
children: [ |
|
Text( |
|
"Contatti disponibili", |
|
style: TextStyle( |
|
color: Colors.white, fontSize: 20), |
|
) |
|
], |
|
), |
|
), |
|
), |
|
Container( |
|
decoration: BoxDecoration( |
|
color: Colors.white, |
|
borderRadius: BorderRadius.only( |
|
bottomLeft: Radius.circular(10), |
|
bottomRight: Radius.circular(10)), |
|
), |
|
//color: Colors.white, |
|
child: Padding( |
|
padding: EdgeInsets.all(15), |
|
child: Column( |
|
children: [ |
|
if (widget.userList.username.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
alignment: WrapAlignment.start, |
|
children: [ |
|
Text( |
|
"Nome utente: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text(widget.userList.username), |
|
], |
|
), |
|
), |
|
if (widget.userList.name.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
children: [ |
|
Text( |
|
"Nome: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text( |
|
widget.userList.name, |
|
), |
|
], |
|
), |
|
), |
|
if (widget.userList.surname.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
alignment: WrapAlignment.start, |
|
children: [ |
|
Text( |
|
"Cognome: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text(widget.userList.surname), |
|
], |
|
), |
|
), |
|
if (widget.userList.birthday.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
alignment: WrapAlignment.start, |
|
children: [ |
|
Text( |
|
"Data di nascita: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text(widget.userList.birthday), |
|
], |
|
), |
|
), |
|
if (widget.userList.birthplace.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
alignment: WrapAlignment.start, |
|
children: [ |
|
Text( |
|
"Luogo di nascita: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text(widget.userList.birthplace), |
|
], |
|
), |
|
), |
|
if (widget.userList.gender.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
alignment: WrapAlignment.start, |
|
children: [ |
|
Text( |
|
"Sesso: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text(widget.userList.gender), |
|
], |
|
), |
|
), |
|
if (widget.userList.address.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
alignment: WrapAlignment.start, |
|
children: [ |
|
Text( |
|
"indirizzo: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text(widget.userList.address), |
|
], |
|
), |
|
), |
|
if (widget.userList.city.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
alignment: WrapAlignment.start, |
|
children: [ |
|
Text( |
|
"Città: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text(widget.userList.city), |
|
], |
|
), |
|
), |
|
if (widget.userList.cap.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
alignment: WrapAlignment.start, |
|
children: [ |
|
Text( |
|
"CAP: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text(widget.userList.cap), |
|
], |
|
), |
|
), |
|
if (widget.userList.organisation_description |
|
.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
alignment: WrapAlignment.start, |
|
children: [ |
|
Text( |
|
"Organizzazione: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text(widget |
|
.userList.organisation_description), |
|
], |
|
), |
|
), |
|
if (widget.userList.profiles.isNotEmpty) |
|
Align( |
|
alignment: Alignment.topLeft, |
|
child: Wrap( |
|
alignment: WrapAlignment.start, |
|
children: [ |
|
Text( |
|
"Profili: ", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold), |
|
), |
|
Text(widget.userList.profiles), |
|
], |
|
), |
|
), |
|
Divider(), |
|
if (widget.userList.phones.length > 0 || |
|
widget.userList.mobile_phones.length > 0) |
|
Row( |
|
children: [ |
|
Text( |
|
"Numeri di telefono", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold, |
|
fontSize: 18), |
|
), |
|
], |
|
), |
|
SizedBox( |
|
height: 20, |
|
), |
|
for (int i = 0; |
|
i < widget.userList.phones.length; |
|
i++) |
|
Container( |
|
child: Column( |
|
children: [ |
|
Row( |
|
children: [ |
|
Text(widget.userList.phones[i] |
|
['type']), |
|
], |
|
), |
|
Row( |
|
mainAxisAlignment: |
|
MainAxisAlignment.spaceBetween, |
|
children: [ |
|
Text(widget.userList.phones[i] |
|
['value']), |
|
IconButton( |
|
icon: Icon(Icons.phone), |
|
color: Colors.green, |
|
onPressed: () async { |
|
await Utility.makePhoneCall( |
|
widget.userList.phones[i] |
|
['value']); |
|
}, |
|
) |
|
], |
|
), |
|
Divider(), |
|
], |
|
), |
|
), |
|
for (int i = 0; |
|
i < widget.userList.mobile_phones.length; |
|
i++) |
|
Container( |
|
child: Column( |
|
children: [ |
|
Row( |
|
children: [ |
|
Text(widget.userList |
|
.mobile_phones[i]['type']), |
|
], |
|
), |
|
Row( |
|
mainAxisAlignment: |
|
MainAxisAlignment.spaceBetween, |
|
children: [ |
|
Text(widget.userList |
|
.mobile_phones[i]['value']), |
|
IconButton( |
|
icon: Icon(Icons.phone), |
|
color: Colors.green, |
|
onPressed: () async { |
|
await Utility.makePhoneCall( |
|
widget.userList |
|
.mobile_phones[i] |
|
['value']); |
|
}, |
|
) |
|
], |
|
), |
|
Divider(), |
|
], |
|
), |
|
), |
|
SizedBox( |
|
height: 20, |
|
), |
|
if (widget.userList.emails.length > 0) |
|
Row( |
|
children: [ |
|
Text( |
|
"E-mail", |
|
style: TextStyle( |
|
fontWeight: FontWeight.bold, |
|
fontSize: 18), |
|
), |
|
], |
|
), |
|
SizedBox( |
|
height: 20, |
|
), |
|
for (int i = 0; |
|
i < widget.userList.emails.length; |
|
i++) |
|
Container( |
|
child: Column( |
|
children: [ |
|
Row( |
|
children: [ |
|
Text(widget.userList.emails[i] |
|
['type']), |
|
], |
|
), |
|
Row( |
|
mainAxisAlignment: |
|
MainAxisAlignment.spaceBetween, |
|
children: [ |
|
Text(widget.userList.emails[i] |
|
['value']), |
|
IconButton( |
|
icon: Icon(Icons.email), |
|
color: Colors.red, |
|
onPressed: () async { |
|
await Utility.makeEmail(widget |
|
.userList |
|
.emails[i]['value']); |
|
}, |
|
) |
|
], |
|
), |
|
Divider(), |
|
], |
|
), |
|
), |
|
], |
|
), |
|
), |
|
), |
|
], |
|
)), |
|
) |
|
], |
|
), |
|
), |
|
), |
|
); |
|
} |
|
}
|
|
|