mirror of
				https://github.com/inventree/inventree-app.git
				synced 2025-10-29 20:40:35 +00:00 
			
		
		
		
	Improve widget for submitting user feedback
This commit is contained in:
		
							
								
								
									
										2
									
								
								lib/l10n
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								lib/l10n
									
									
									
									
									
								
							 Submodule lib/l10n updated: ad2e43ea5e...c81c1c79d1
									
								
							| @@ -9,6 +9,7 @@ import 'package:inventree/widget/dialogs.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:font_awesome_flutter/font_awesome_flutter.dart'; | ||||
| import 'package:inventree/l10.dart'; | ||||
| import 'package:inventree/widget/submit_feedback.dart'; | ||||
|  | ||||
| import 'package:url_launcher/url_launcher.dart'; | ||||
|  | ||||
| @@ -129,43 +130,14 @@ class _InvenTreeSettingsState extends State<InvenTreeSettingsWidget> { | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   void _sendReport(BuildContext context, String message) async { | ||||
|     bool result = await sentryReportMessage(message); | ||||
|  | ||||
|     if (result) { | ||||
|       showSnackIcon( | ||||
|         L10().feedbackSuccess, | ||||
|         success: true, | ||||
|       ); | ||||
|     } else { | ||||
|       showSnackIcon( | ||||
|         L10().feedbackError, | ||||
|         success: false, | ||||
|       ); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   void _submitFeedback(BuildContext context) async { | ||||
|  | ||||
|     TextEditingController _controller = TextEditingController(); | ||||
|  | ||||
|     _controller.clear(); | ||||
|  | ||||
|     showFormDialog( | ||||
|       L10().submitFeedback, | ||||
|       key: _feedbackKey, | ||||
|       callback: () { | ||||
|         _sendReport(context, _controller.text); | ||||
|       }, | ||||
|       fields: <Widget>[ | ||||
|         TextField( | ||||
|           decoration: InputDecoration( | ||||
|           ), | ||||
|           keyboardType: TextInputType.multiline, | ||||
|           maxLines: null, | ||||
|           controller: _controller | ||||
|     Navigator.push( | ||||
|       context, | ||||
|       MaterialPageRoute( | ||||
|         builder: (context) => SubmitFeedbackWidget(), | ||||
|       ) | ||||
|       ] | ||||
|     ); | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										94
									
								
								lib/widget/submit_feedback.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								lib/widget/submit_feedback.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,94 @@ | ||||
|  | ||||
|  | ||||
| import 'package:email_validator/email_validator.dart'; | ||||
| import 'package:flutter/cupertino.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:font_awesome_flutter/font_awesome_flutter.dart'; | ||||
| import 'package:inventree/inventree/sentry.dart'; | ||||
| import 'package:inventree/widget/snacks.dart'; | ||||
|  | ||||
| import '../l10.dart'; | ||||
|  | ||||
| class SubmitFeedbackWidget extends StatefulWidget { | ||||
|  | ||||
|   @override | ||||
|   _SubmitFeedbackState createState() => _SubmitFeedbackState(); | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| class _SubmitFeedbackState extends State<SubmitFeedbackWidget> { | ||||
|  | ||||
|   final _formkey = new GlobalKey<FormState>(); | ||||
|  | ||||
|   String message = ""; | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|  | ||||
|     return Scaffold( | ||||
|       appBar: AppBar( | ||||
|         title: Text(L10().submitFeedback), | ||||
|         actions: [ | ||||
|           IconButton( | ||||
|             icon: FaIcon(FontAwesomeIcons.paperPlane), | ||||
|             onPressed: () async { | ||||
|               if (_formkey.currentState!.validate()) { | ||||
|                 _formkey.currentState!.save(); | ||||
|  | ||||
|                 // Upload | ||||
|                 bool result = await sentryReportMessage(message); | ||||
|  | ||||
|                 if (result) { | ||||
|                   showSnackIcon( | ||||
|                     L10().feedbackSuccess, | ||||
|                     success: true, | ||||
|                   ); | ||||
|                 } else { | ||||
|                   showSnackIcon( | ||||
|                     L10().feedbackError, | ||||
|                     success: false | ||||
|                   ); | ||||
|                 } | ||||
|  | ||||
|                 // Exit | ||||
|                 Navigator.of(context).pop(); | ||||
|               } | ||||
|             }, | ||||
|           ) | ||||
|         ], | ||||
|       ), | ||||
|       body: Form( | ||||
|         key: _formkey, | ||||
|         child: SingleChildScrollView( | ||||
|           child: Column( | ||||
|             mainAxisAlignment: MainAxisAlignment.start, | ||||
|             mainAxisSize: MainAxisSize.max, | ||||
|             crossAxisAlignment: CrossAxisAlignment.start, | ||||
|             children: [ | ||||
|               TextFormField( | ||||
|                 decoration: InputDecoration( | ||||
|                   labelText: L10().feedback, | ||||
|                   labelStyle: TextStyle(fontWeight: FontWeight.bold), | ||||
|                 ), | ||||
|                 maxLines: null, | ||||
|                 keyboardType: TextInputType.multiline, | ||||
|                 validator: (value) { | ||||
|                   if (value == null || value.trim().isEmpty) { | ||||
|                     return L10().valueCannotBeEmpty; | ||||
|                   } | ||||
|                 }, | ||||
|                 onSaved: (value) { | ||||
|                   if (value != null) { | ||||
|                     message = value; | ||||
|                   } | ||||
|                 }, | ||||
|               ), | ||||
|             ], | ||||
|           ) | ||||
|         ) | ||||
|       ) | ||||
|     ); | ||||
|   } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user