import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; //import 'package:flutter_map/plugin_api.dart'; import 'package:idrocap/api/api_service.dart'; import 'package:idrocap/private/notifiche.dart'; import 'package:hexcolor/hexcolor.dart'; import '../utility/utility.dart'; import 'constant/globals.dart' as globals; import 'widget/menu.dart'; class NuovaMisurazione extends StatefulWidget { final dynamic water_drawing_meters; final String id; NuovaMisurazione({super.key, required this.water_drawing_meters, required this.id}); @override State createState() => _ProfileUserState(); } class _ProfileUserState extends State { final _formInput = GlobalKey(); TextEditingController volume = TextEditingController(text: ''); dynamic listMisurazioni = []; @override void initState() { EasyLoading.instance..userInteractions = false; setState(() { listMisurazioni = widget.water_drawing_meters; }); super.initState(); } @override void dispose() { // TODO: implement dispose EasyLoading.dismiss(); listMisurazioni = []; super.dispose(); } @override Widget build(BuildContext context) { return PopScope( canPop: true, child: Scaffold( appBar: AppBar( iconTheme: IconThemeData(color: Colors.white), backgroundColor: HexColor(globals.colorAppbar), title: Wrap( children: [ Text( "Nuova Misurazione", style: TextStyle(color: Colors.white), ), ], ), leading: InkWell( onTap: () { Navigator.pop(context); }, child: Icon( Icons.arrow_back_ios, color: Colors.white, ), ), actions: [ IconButton( onPressed: () { Navigator.push(context, MaterialPageRoute(builder: (context) => Notifiche())); }, icon: Icon(Icons.notifications), ) ], ), drawer: Menu(), body: ListView( children: [ Card( elevation: 10, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20.0), ), margin: EdgeInsets.all(20), child: Column(children: [ Container( decoration: BoxDecoration( borderRadius: BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10)), color: HexColor(globals.coloreCard), ), padding: EdgeInsets.symmetric(vertical: 15, horizontal: 15), child: Column( children: [ Row( children: [ Text( "Lista ultime misurazioni dello strumento: ", style: TextStyle(color: Colors.white), ), ], ), ], ), ), Container( decoration: BoxDecoration( borderRadius: BorderRadius.only(bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)), color: Colors.white, ), padding: EdgeInsets.symmetric(vertical: 15, horizontal: 15), child: Column( children: [ if (this.listMisurazioni.length > 0) for (int i = 0; i < this.listMisurazioni.length; i++) if (this.listMisurazioni.length > 0) Container( child: Column( children: [ ListTile( leading: Icon(Icons.straighten), title: Text( this.listMisurazioni[i]['volume'].toString(), style: TextStyle(fontWeight: FontWeight.bold), ), subtitle: Text( (this.listMisurazioni[i]['user']['name'].toString() + " " + this.listMisurazioni[i]['user']['surname'].toString()), style: TextStyle(fontStyle: FontStyle.italic), ), trailing: Text(this.listMisurazioni[i]['date']), ), ], ), ), ], ), ) ]), ), Center( child: Directionality( textDirection: TextDirection.rtl, child: ElevatedButton.icon( label: Text( "Aggiungi una nuova misurazione ", style: TextStyle(color: Colors.white), ), onPressed: () { avviaFormSalvataggio(this.context); }, icon: Icon( Icons.add, color: Colors.white, ), style: ElevatedButton.styleFrom( backgroundColor: HexColor(globals.colorAppbar), ), ), ), ), SizedBox( height: 30, ), ], )), ); } Future avviaFormSalvataggio(BuildContext context) { return showDialog( context: context, builder: (BuildContext contextAlert) { return CupertinoAlertDialog( title: Text('Aggiungi una nuova misurazione'), content: Form( key: _formInput, child: Column( children: [ Container( padding: EdgeInsets.only(left: 15, right: 15), child: TextFormField( controller: this.volume, inputFormatters: [FilteringTextInputFormatter.digitsOnly], keyboardType: TextInputType.number, decoration: InputDecoration( hintStyle: TextStyle(color: Colors.black), labelText: 'Lettura volume (m^3)*', labelStyle: TextStyle(color: Colors.black), enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.black), ), focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.black), // when the TextFormField in focused ), ), validator: (value) { if (value!.isEmpty) { return "Attenzione campo obbligatorio"; } return null; }), ), ], ), ), actions: [ TextButton( style: TextButton.styleFrom( textStyle: Theme.of(context).textTheme.labelLarge, ), child: const Text('Annulla'), onPressed: () { this.volume.text = ""; Navigator.of(contextAlert).pop(); }, ), TextButton( style: TextButton.styleFrom( textStyle: Theme.of(context).textTheme.labelLarge, ), child: const Text('Salva'), onPressed: () { if (_formInput.currentState!.validate()) { if (this.volume.text != "" && this.widget.id != "") { ApiService().addMisurazioneStrumenti(this.volume.text, this.widget.id, this.context).then((value) { if (value['statusCode'] == 200) { setState(() { this.volume.text = ""; }); Navigator.of(contextAlert).pop(); Navigator.of(context).pop(); ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text(value['stringa'].toString()), )); } else if (value['statusCode'] == 401) { EasyLoading.dismiss(); Navigator.of(contextAlert).pop(); Utility().dialogAlert(this.context); } else { EasyLoading.dismiss(); Navigator.of(contextAlert).pop(); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(value['stringa'].toString()), ), ); } EasyLoading.dismiss(); }); } } }, ), ], ); }, ); } }