diff --git a/lib/json_schema_ui/models/ui_model.dart b/lib/json_schema_ui/models/ui_model.dart index 61177e3..ab964eb 100644 --- a/lib/json_schema_ui/models/ui_model.dart +++ b/lib/json_schema_ui/models/ui_model.dart @@ -1,9 +1,8 @@ import 'dart:collection'; - import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'package:uniturnip/json_schema_ui/fields/json_schema_field.dart'; -import '../fields/json_schema_leaf.dart'; +// import 'package:uniturnip/json_schema_ui/fields/json_schema_field.dart'; +// import '../fields/json_schema_leaf.dart'; import 'mapPath.dart'; import '../utils.dart'; import 'widget_data.dart'; diff --git a/lib/json_schema_ui/widgets/array_buttons.dart b/lib/json_schema_ui/widgets/array_buttons.dart index cc09bf2..0b29c7c 100644 --- a/lib/json_schema_ui/widgets/array_buttons.dart +++ b/lib/json_schema_ui/widgets/array_buttons.dart @@ -6,7 +6,7 @@ import '../models/mapPath.dart'; class ArrayPanel extends StatelessWidget { const ArrayPanel(this.path, {Key? key}) : super(key: key); - + final MapPath path; @override @@ -14,11 +14,9 @@ class ArrayPanel extends StatelessWidget { return Row( children: [ ElevatedButton( - onPressed: () => onAdd(context, path), child: const Text('+') - ), + onPressed: () => onAdd(context, path), child: const Text('+')), ElevatedButton( - onPressed: () => onRemove(context, path), child: const Text('-') - ), + onPressed: () => onRemove(context, path), child: const Text('-')), ], ); } @@ -26,7 +24,8 @@ class ArrayPanel extends StatelessWidget { void onAdd(BuildContext context, MapPath path) { Provider.of(context, listen: false).addArrayElement(path); } + void onRemove(BuildContext context, MapPath path) { Provider.of(context, listen: false).removeArrayElement(path); } -} \ No newline at end of file +} diff --git a/lib/json_schema_ui/widgets/audio_widget.dart b/lib/json_schema_ui/widgets/audio_widget.dart index 47faaf8..1de6e71 100644 --- a/lib/json_schema_ui/widgets/audio_widget.dart +++ b/lib/json_schema_ui/widgets/audio_widget.dart @@ -5,7 +5,6 @@ // import 'package:flutter_sound/flutter_sound.dart'; // import 'package:flutter_sound_platform_interface/flutter_sound_recorder_platform_interface.dart'; // import 'package:permission_handler/permission_handler.dart'; -// // import '../../../../json_schema_ui/models/widget_data.dart'; // import 'widget_ui.dart'; // @@ -81,10 +80,12 @@ // final session = await AudioSession.instance; // await session.configure(AudioSessionConfiguration( // avAudioSessionCategory: AVAudioSessionCategory.playAndRecord, -// avAudioSessionCategoryOptions: AVAudioSessionCategoryOptions.allowBluetooth | -// AVAudioSessionCategoryOptions.defaultToSpeaker, +// avAudioSessionCategoryOptions: +// AVAudioSessionCategoryOptions.allowBluetooth | +// AVAudioSessionCategoryOptions.defaultToSpeaker, // avAudioSessionMode: AVAudioSessionMode.spokenAudio, -// avAudioSessionRouteSharingPolicy: AVAudioSessionRouteSharingPolicy.defaultPolicy, +// avAudioSessionRouteSharingPolicy: +// AVAudioSessionRouteSharingPolicy.defaultPolicy, // avAudioSessionSetActiveOptions: AVAudioSessionSetActiveOptions.none, // androidAudioAttributes: const AndroidAudioAttributes( // contentType: AndroidAudioContentType.speech, @@ -122,7 +123,10 @@ // } // // void play() { -// assert(_mPlayerIsInited && _mplaybackReady && _mRecorder!.isStopped && _mPlayer!.isStopped); +// assert(_mPlayerIsInited && +// _mplaybackReady && +// _mRecorder!.isStopped && +// _mPlayer!.isStopped); // _mPlayer! // .startPlayer( // fromURI: _mPath, @@ -170,11 +174,15 @@ // IconButton( // onPressed: getRecorderFn(), // icon: Icon( -// _mRecorder!.isRecording ? Icons.stop_circle_outlined : Icons.mic, +// _mRecorder!.isRecording +// ? Icons.stop_circle_outlined +// : Icons.mic, // color: Colors.black, // ), // ), -// Text(_mRecorder!.isRecording ? 'Recording in progress' : 'Recorder is stopped') +// Text(_mRecorder!.isRecording +// ? 'Recording in progress' +// : 'Recorder is stopped') // ], // ), // const SizedBox(width: 8), @@ -184,11 +192,17 @@ // IconButton( // onPressed: getPlaybackFn(), // icon: Icon( -// _mPlayer!.isPlaying ? Icons.stop_circle_outlined : Icons.play_arrow, +// _mPlayer!.isPlaying +// ? Icons.stop_circle_outlined +// : Icons.play_arrow, // color: Colors.black, // ), // ), -// Text(_mPlayer!.isPlaying ? 'Playback in progress' : 'Player is stopped'), +// Text( +// _mPlayer!.isPlaying +// ? 'Playback in progress' +// : 'Player is stopped' +// ), // ], // ), // ], diff --git a/lib/json_schema_ui/widgets/card_widget.dart b/lib/json_schema_ui/widgets/card_widget.dart index 22d8eb6..8c3deea 100644 --- a/lib/json_schema_ui/widgets/card_widget.dart +++ b/lib/json_schema_ui/widgets/card_widget.dart @@ -3,7 +3,11 @@ import 'package:provider/provider.dart'; import '../models/ui_model.dart'; class CardWidget extends StatelessWidget { - const CardWidget({Key? key, required this.widgets, required this.schema}) : super(key: key); + const CardWidget({ + Key? key, + required this.widgets, + required this.schema, + }) : super(key: key); final Widget widgets; final Map schema; @@ -17,29 +21,29 @@ class CardWidget extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Container( - padding: const EdgeInsets.all(16.0), - alignment: Alignment.center, - width: 350.0, - color: Colors.blueGrey, - child: widgets, - ), - const SizedBox( - width: 16.0, - ), - Container( - padding: const EdgeInsets.all(4.0), - color: Colors.blueGrey, - child: IconButton( - icon: const Icon( - Icons.arrow_forward, - color: Colors.white, - ), - onPressed: () { - context.read().getField(); - })), - ] - ) + Container( + padding: const EdgeInsets.all(16.0), + alignment: Alignment.center, + width: 350.0, + color: Colors.blueGrey, + child: widgets, + ), + const SizedBox( + width: 16.0, + ), + Container( + padding: const EdgeInsets.all(4.0), + color: Colors.blueGrey, + child: IconButton( + icon: const Icon( + Icons.arrow_forward, + color: Colors.white, + ), + onPressed: () { + context.read().getField(); + })), + ] + ) ); } -} \ No newline at end of file +} diff --git a/lib/json_schema_ui/widgets/checkbox_widget.dart b/lib/json_schema_ui/widgets/checkbox_widget.dart index 591f92d..747ea87 100644 --- a/lib/json_schema_ui/widgets/checkbox_widget.dart +++ b/lib/json_schema_ui/widgets/checkbox_widget.dart @@ -9,33 +9,29 @@ class CheckboxWidget extends StatelessWidget { @override Widget build(BuildContext context) { String title = widgetData.schema['title'] ?? ''; + // String description = widgetData.schema['description'] ?? ''; - return FormField( - builder: (state) { - return CheckboxListTile( + return CheckboxListTile( contentPadding: EdgeInsets.zero, controlAffinity: ListTileControlAffinity.leading, autofocus: widgetData.autofocus, + //true value: true == widgetData.value, onChanged: (dynamic newValue) { - widgetData.onChange(context, widgetData.path, newValue); + widgetData.onChange( + context, + widgetData.path, + newValue, + ); }, title: Text(title), - subtitle: Visibility( - visible: widgetData.value == null, - child: Text( - 'Required', - style: TextStyle(color: Theme.of(context).errorColor), - ), - )); - }, - validator: (value) { - if (widgetData.value == null) { - return 'Required'; - } else { - return null; - } - }, - ); + subtitle: widgetData.value == null + ? Text( + 'Required', + style: TextStyle( + color: Theme.of(context).errorColor, + ), + ) + : null); } } diff --git a/lib/json_schema_ui/widgets/date_time_widget.dart b/lib/json_schema_ui/widgets/date_time_widget.dart index c80255c..a4120d0 100644 --- a/lib/json_schema_ui/widgets/date_time_widget.dart +++ b/lib/json_schema_ui/widgets/date_time_widget.dart @@ -22,12 +22,15 @@ class DateTimeWidget extends StatelessWidget { Future _selectDate(BuildContext context) async { final DateTime? pickedDate = await showDatePicker( - context: context, - initialDate: DateTime.now(), - firstDate: DateTime(2015, 8), - lastDate: DateTime(2101)); - final TimeOfDay? pickedTime = - await showTimePicker(context: context, initialTime: TimeOfDay.now()); + context: context, + initialDate: DateTime.now(), + firstDate: DateTime(2015, 8), + lastDate: DateTime(2101), + ); + final TimeOfDay? pickedTime = await showTimePicker( + context: context, + initialTime: TimeOfDay.now(), + ); if (pickedDate != null && pickedTime != null) { String _year = pickedDate.year.toString(); String _month = pickedDate.month.toString().padLeft(2, '0'); @@ -51,10 +54,13 @@ class DateTimeWidget extends StatelessWidget { autofocus: widgetData.autofocus, readOnly: true, onTap: () => _selectDate(context), - decoration: InputDecoration(border: const OutlineInputBorder(), suffixIcon: IconButton( - onPressed: () => _selectDate(context), - icon: const Icon(Icons.calendar_today), - )), + decoration: InputDecoration( + border: const OutlineInputBorder(), + suffixIcon: IconButton( + onPressed: () => _selectDate(context), + icon: const Icon(Icons.calendar_today), + ), + ), ), ); } diff --git a/lib/json_schema_ui/widgets/date_widget.dart b/lib/json_schema_ui/widgets/date_widget.dart index f23f389..e817d49 100644 --- a/lib/json_schema_ui/widgets/date_widget.dart +++ b/lib/json_schema_ui/widgets/date_widget.dart @@ -1,10 +1,8 @@ import 'package:flutter/material.dart'; import 'dart:async'; - import '../models/widget_data.dart'; import 'widget_ui.dart'; - class DateWidget extends StatelessWidget { DateWidget({Key? key, required this.widgetData}) : super(key: key); @@ -33,7 +31,11 @@ class DateWidget extends StatelessWidget { String _year = picked.year.toString(); String _month = picked.month.toString().padLeft(2, '0'); String _day = picked.day.toString().padLeft(2, '0'); - widgetData.onChange(context, widgetData.path, '$_day/$_month/$_year'); + widgetData.onChange( + context, + widgetData.path, + '$_day/$_month/$_year', + ); } } @@ -53,10 +55,12 @@ class DateWidget extends StatelessWidget { autofocus: widgetData.autofocus, readOnly: true, onTap: () => _selectDate(context), - decoration: InputDecoration(border: const OutlineInputBorder(), suffixIcon: IconButton( - onPressed: () => _selectDate(context), - icon: const Icon(Icons.calendar_today), - )), + decoration: InputDecoration( + border: const OutlineInputBorder(), + suffixIcon: IconButton( + onPressed: () => _selectDate(context), + icon: const Icon(Icons.calendar_today), + )), ), ); } diff --git a/lib/json_schema_ui/widgets/email_widget.dart b/lib/json_schema_ui/widgets/email_widget.dart index a1bf559..24ca183 100644 --- a/lib/json_schema_ui/widgets/email_widget.dart +++ b/lib/json_schema_ui/widgets/email_widget.dart @@ -27,23 +27,28 @@ class _EmailWidgetState extends State { return WidgetUI( title: title, description: description, - child: TextFormField( - validator: MultiValidator([ - RequiredValidator(errorText: "Required"), - EmailValidator(errorText: "Please enter a valid email address"), - ]), - controller: textControl, - decoration: const InputDecoration( - hintText: 'Email', - border: OutlineInputBorder(), - ), - keyboardType: TextInputType.emailAddress, - onChanged: (val) => widget.widgetData.onChange(context, widget.widgetData.path, val), - enabled: !widget.widgetData.disabled, - autofocus: widget.widgetData.autofocus, - readOnly: widget.widgetData.readonly, - autofillHints: const [AutofillHints.email], - ), + child: TextFormField( + validator: MultiValidator([ + RequiredValidator( + errorText: "Required", + ), + EmailValidator( + errorText: "Please enter a valid email address", + ), + ]), + controller: textControl, + decoration: const InputDecoration( + hintText: 'Email', + border: OutlineInputBorder(), + ), + keyboardType: TextInputType.emailAddress, + onChanged: (val) => + widget.widgetData.onChange(context, widget.widgetData.path, val), + enabled: !widget.widgetData.disabled, + autofocus: widget.widgetData.autofocus, + readOnly: widget.widgetData.readonly, + autofillHints: const [AutofillHints.email], + ), ); } } diff --git a/lib/json_schema_ui/widgets/file_widget.dart b/lib/json_schema_ui/widgets/file_widget.dart index f75ee82..8a2440d 100644 --- a/lib/json_schema_ui/widgets/file_widget.dart +++ b/lib/json_schema_ui/widgets/file_widget.dart @@ -44,8 +44,9 @@ class _FileWidgetState extends State { type: _pickingType, allowMultiple: _multiPick, onFileLoading: (FilePickerStatus status) => print(status), - allowedExtensions: - (_extension?.isNotEmpty ?? false) ? _extension?.replaceAll(' ', '').split(',') : null, + allowedExtensions: (_extension?.isNotEmpty ?? false) + ? _extension?.replaceAll(' ', '').split(',') + : null, )) ?.files; } on PlatformException catch (e) { @@ -56,7 +57,8 @@ class _FileWidgetState extends State { if (!mounted) return; setState(() { _isLoading = false; - _fileName = _paths != null ? _paths!.map((e) => e.name).toString() : '...'; + _fileName = + _paths != null ? _paths!.map((e) => e.name).toString() : '...'; _userAborted = _paths == null; }); } @@ -86,8 +88,9 @@ class _FileWidgetState extends State { _resetState(); try { String? fileName = await FilePicker.platform.saveFile( - allowedExtensions: - (_extension?.isNotEmpty ?? false) ? _extension?.replaceAll(' ', '').split(',') : null, + allowedExtensions: (_extension?.isNotEmpty ?? false) + ? _extension?.replaceAll(' ', '').split(',') + : null, type: _pickingType, ); setState(() { @@ -159,7 +162,8 @@ class _FileWidgetState extends State { shrinkWrap: true, itemBuilder: (BuildContext context, int index) => Text('File $index: ${_fileName ?? '...'}'), - separatorBuilder: (BuildContext context, int index) => const Divider(), + separatorBuilder: (BuildContext context, int index) => + const Divider(), itemCount: _paths!.isNotEmpty ? _paths!.length : 1, ); } else { diff --git a/lib/json_schema_ui/widgets/null_widget.dart b/lib/json_schema_ui/widgets/null_widget.dart index 3cdbf10..ee81800 100644 --- a/lib/json_schema_ui/widgets/null_widget.dart +++ b/lib/json_schema_ui/widgets/null_widget.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; - import '../models/widget_data.dart'; import 'widget_ui.dart'; diff --git a/lib/json_schema_ui/widgets/password_widget.dart b/lib/json_schema_ui/widgets/password_widget.dart index 390c966..f5d7d8e 100644 --- a/lib/json_schema_ui/widgets/password_widget.dart +++ b/lib/json_schema_ui/widgets/password_widget.dart @@ -45,4 +45,4 @@ class PasswordWidget extends StatelessWidget { ), ); } -} +} \ No newline at end of file diff --git a/lib/json_schema_ui/widgets/radio_widget.dart b/lib/json_schema_ui/widgets/radio_widget.dart index 5e4fa66..63d0db0 100644 --- a/lib/json_schema_ui/widgets/radio_widget.dart +++ b/lib/json_schema_ui/widgets/radio_widget.dart @@ -33,40 +33,38 @@ class RadioWidget extends StatelessWidget { title: title, description: description, child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ListView.builder( - shrinkWrap: true, - itemCount: items.length, - itemBuilder: (BuildContext context, int index) => - // FormBuilderRadio( - // attribute: "best_language", - // leadingInput: true, - // onChanged: (dynamic newValue) => - // widgetData.onChange(context, widgetData.path, newValue), - // validators: [FormBuilderValidators.required()], - // options: items.map((lang) => FormBuilderFieldOption( - // value: lang, - // child: Text('$lang'), - // )).toList(growable: false), - // ), - RadioListTile( - title: Text(names.length > index ? names[index] ?? items[index].toString() : items[index].toString()), - value: items[index], - groupValue: widgetData.value, - contentPadding: EdgeInsets.zero, - onChanged: (dynamic newValue) => - widgetData.onChange(context, widgetData.path, newValue), + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ListView.builder( + shrinkWrap: true, + itemCount: items.length, + itemBuilder: ( + BuildContext context, + int index, + ) => RadioListTile( + title: Text(names.length > index + ? names[index] ?? items[index].toString() + : items[index].toString()), + value: items[index], + groupValue: widgetData.value, + contentPadding: EdgeInsets.zero, + onChanged: (dynamic newValue) => widgetData.onChange( + context, + widgetData.path, + newValue, ), ), - items.contains(true) ? const SizedBox.shrink() : Text( - 'Required', - style: TextStyle( - color: Theme.of(context).errorColor + ), + items.contains(true) + ? const SizedBox.shrink() + : Text( + 'Required', + style: TextStyle( + color: Theme.of(context).errorColor, + ), ), - ), - ], - ), + ], + ), ); } } diff --git a/lib/json_schema_ui/widgets/reader_widget.dart b/lib/json_schema_ui/widgets/reader_widget.dart index 56f12d6..efff59c 100644 --- a/lib/json_schema_ui/widgets/reader_widget.dart +++ b/lib/json_schema_ui/widgets/reader_widget.dart @@ -23,17 +23,15 @@ class ReaderWidget extends StatelessWidget { children: [ Container( padding: const EdgeInsets.all(16.0), - child: RichText( - text: sentenceAsTextSpan)), + child: RichText(text: sentenceAsTextSpan)), Container( padding: const EdgeInsets.all(16.0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - //(textList.indexOf(sentenceAsString) == 0) ? Container() : - Container( - color: Colors.grey, - child: IconButton( + Container( + color: Colors.grey, + child: IconButton( icon: const Icon( Icons.arrow_back, color: Colors.white, @@ -42,10 +40,9 @@ class ReaderWidget extends StatelessWidget { //context.read().updateText(false); //context.read().getTextSpan(widgetData, context); })), - //(textList.indexOf(sentenceAsString) == textList.length - 1) ? Container() : - Container( - color: Colors.grey, - child: IconButton( + Container( + color: Colors.grey, + child: IconButton( icon: const Icon( Icons.arrow_forward, color: Colors.white, @@ -60,32 +57,33 @@ class ReaderWidget extends StatelessWidget { clickedWord.isEmpty ? Container() : Container( - padding: const EdgeInsets.all(16.0), - child: ListTile( - title: Text( - "$clickedWord: $translation", - style: const TextStyle(fontSize: 20.0), + padding: const EdgeInsets.all(16.0), + child: ListTile( + title: Text( + "$clickedWord: $translation", + style: const TextStyle(fontSize: 20.0), + ), + trailing: IconButton( + icon: const Icon(Icons.close), + onPressed: () { + context.read().hideClickedWord(); + }), ), - trailing: IconButton( - icon: const Icon(Icons.close), - onPressed: () { - context.read().hideClickedWord(); - }), ), - ), clickedWordList.isEmpty ? Container() : Container( - padding: const EdgeInsets.all(16.0), - child: ListView.builder( - shrinkWrap: true, - padding: const EdgeInsets.all(8), - itemCount: clickedWordList.length, - itemBuilder: (BuildContext context, int index) { - return Text("${clickedWordList[index]}: ${translationList[index]}", style: const TextStyle(fontSize: 20)); - } - ), - ) + padding: const EdgeInsets.all(16.0), + child: ListView.builder( + shrinkWrap: true, + padding: const EdgeInsets.all(8), + itemCount: clickedWordList.length, + itemBuilder: (BuildContext context, int index) { + return Text( + "${clickedWordList[index]}: ${translationList[index]}", + style: const TextStyle(fontSize: 20)); + }), + ) ], ); } diff --git a/lib/json_schema_ui/widgets/select_widget.dart b/lib/json_schema_ui/widgets/select_widget.dart index ebf0672..874f2d6 100644 --- a/lib/json_schema_ui/widgets/select_widget.dart +++ b/lib/json_schema_ui/widgets/select_widget.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:collection/collection.dart'; - import '../../../../json_schema_ui/models/widget_data.dart'; import 'widget_ui.dart'; @@ -13,12 +12,12 @@ class SelectWidget extends StatelessWidget { Widget build(BuildContext context) { String title = widgetData.schema['title'] ?? ''; String description = widgetData.schema['description'] ?? ''; - + String type = widgetData.schema['type']; List items = [null]; List names = [""]; - + if (type == 'boolean') { items.addAll([true, false]); if (widgetData.schema['enumNames'] == null) { @@ -42,16 +41,16 @@ class SelectWidget extends StatelessWidget { onChanged: (dynamic newValue) { widgetData.onChange(context, widgetData.path, newValue); }, - items: items - .mapIndexed((index, item) { - return DropdownMenuItem( - alignment: AlignmentDirectional.centerStart, - enabled: !widgetData.disabled, - value: item, - child: Text( names.asMap().containsKey(index) ? names[index] : item.toString()), - ); - }) - .toList(), + items: items.mapIndexed((index, item) { + return DropdownMenuItem( + alignment: AlignmentDirectional.centerStart, + enabled: !widgetData.disabled, + value: item, + child: Text(names.asMap().containsKey(index) + ? names[index] + : item.toString()), + ); + }).toList(), ), ); } diff --git a/lib/json_schema_ui/widgets/text_widget.dart b/lib/json_schema_ui/widgets/text_widget.dart index db930b4..c4aa28f 100644 --- a/lib/json_schema_ui/widgets/text_widget.dart +++ b/lib/json_schema_ui/widgets/text_widget.dart @@ -3,24 +3,35 @@ import 'package:form_field_validator/form_field_validator.dart'; import 'package:uniturnip/json_schema_ui/widgets/widget_ui.dart'; import 'package:uniturnip/json_schema_ui/models/widget_data.dart'; -class TextWidget extends StatelessWidget { +class TextWidget extends StatefulWidget { TextWidget({Key? key, required this.widgetData}) : super(key: key); final WidgetData widgetData; + + @override + State createState() => _TextWidgetState(); +} + +class _TextWidgetState extends State { final TextEditingController textControl = TextEditingController(); - + + @override + void dispose() { + textControl.dispose(); + super.dispose(); + } @override Widget build(BuildContext context) { - String title = widgetData.schema['title'] ?? ''; - String description = widgetData.schema['description'] ?? ''; - textControl.text = widgetData.value.toString(); + String title = widget.widgetData.schema['title'] ?? ''; + String description = widget.widgetData.schema['description'] ?? ''; + textControl.text = widget.widgetData.value.toString(); textControl.selection = TextSelection.fromPosition( TextPosition(offset: textControl.text.length), ); - if (widgetData.schema.containsKey('examples')) { - List _options = widgetData.schema['examples']; + if (widget.widgetData.schema.containsKey('examples')) { + List _options = widget.widgetData.schema['examples']; return WidgetUI( title: title, @@ -28,19 +39,21 @@ class TextWidget extends StatelessWidget { child: Autocomplete( fieldViewBuilder: (BuildContext context, TextEditingController textEditingController, - FocusNode focusNode, VoidCallback onFieldSubmitted) { + FocusNode focusNode, + VoidCallback onFieldSubmitted) { return TextFormField( - validator: RequiredValidator( - errorText: 'Please enter a text', - ), - controller: textEditingController, - decoration: const InputDecoration(border: OutlineInputBorder()), - focusNode: focusNode, - onChanged: (val) => widgetData.onChange(context, widgetData.path, val), - onFieldSubmitted: (String value) { - onFieldSubmitted(); - print('You just typed a new entry $value'); - }, + validator: RequiredValidator( + errorText: 'Please enter a text', + ), + controller: textEditingController, + decoration: const InputDecoration(border: OutlineInputBorder()), + focusNode: focusNode, + onChanged: (val) => + widget.widgetData.onChange(context, widget.widgetData.path, val), + onFieldSubmitted: (String value) { + onFieldSubmitted(); + print('You just typed a new entry $value'); + }, ); }, optionsBuilder: (TextEditingValue textEditingValue) { @@ -53,7 +66,7 @@ class TextWidget extends StatelessWidget { }); }, onSelected: (String selection) { - widgetData.onChange(context, widgetData.path, selection); + widget.widgetData.onChange(context, widget.widgetData.path, selection); }, ), ); @@ -67,11 +80,17 @@ class TextWidget extends StatelessWidget { errorText: 'Please enter a text', ), controller: textControl, - onChanged: (val) => widgetData.onChange(context, widgetData.path, val), - enabled: !widgetData.disabled, - autofocus: widgetData.autofocus, - readOnly: widgetData.readonly, - decoration: const InputDecoration(border: OutlineInputBorder()), + onChanged: (val) => widget.widgetData.onChange( + context, + widget.widgetData.path, + val, + ), + enabled: !widget.widgetData.disabled, + autofocus: widget.widgetData.autofocus, + readOnly: widget.widgetData.readonly, + decoration: const InputDecoration( + border: OutlineInputBorder(), + ), ), ); } diff --git a/lib/json_schema_ui/widgets/textarea_widget.dart b/lib/json_schema_ui/widgets/textarea_widget.dart index 75895a7..078e36d 100644 --- a/lib/json_schema_ui/widgets/textarea_widget.dart +++ b/lib/json_schema_ui/widgets/textarea_widget.dart @@ -23,17 +23,24 @@ class TextareaWidget extends StatelessWidget { title: title, description: description, child: TextFormField( - validator: (val){ - if(val==null || val.isEmpty) + validator: (val) { + if (val == null || val.isEmpty) { return 'Please enter appropriate Date'; + } return null; }, controller: textControl, - onChanged: (val) => widgetData.onChange(context, widgetData.path, val), + onChanged: (val) => widgetData.onChange( + context, + widgetData.path, + val, + ), enabled: !widgetData.disabled, autofocus: widgetData.autofocus, readOnly: widgetData.readonly, - decoration: const InputDecoration(border: OutlineInputBorder()), + decoration: const InputDecoration( + border: OutlineInputBorder(), + ), maxLines: null, minLines: 4, ), diff --git a/lib/json_schema_ui/widgets/widget_ui.dart b/lib/json_schema_ui/widgets/widget_ui.dart index a349102..6f6bd22 100644 --- a/lib/json_schema_ui/widgets/widget_ui.dart +++ b/lib/json_schema_ui/widgets/widget_ui.dart @@ -1,7 +1,12 @@ import 'package:flutter/material.dart'; class WidgetUI extends StatelessWidget { - const WidgetUI({Key? key, required this.title, required this.description, required this.child}) : super(key: key); + const WidgetUI( + {Key? key, + required this.title, + required this.description, + required this.child}) + : super(key: key); final Widget child; final String title; @@ -14,10 +19,19 @@ class WidgetUI extends StatelessWidget { children: [ ListTile( contentPadding: EdgeInsets.zero, - title: title.isNotEmpty ? Text(title, style: const TextStyle(fontWeight: FontWeight.bold),) : null, - subtitle: description.isNotEmpty ? Text(description) : null, + title: title.isNotEmpty + ? Text( + title, + style: const TextStyle(fontWeight: FontWeight.bold), + ) + : null, + subtitle: description.isNotEmpty + ? Text(description) + : null, ), - description.isNotEmpty ? const SizedBox(height: 8) : const SizedBox.shrink(), + description.isNotEmpty + ? const SizedBox(height: 8) + : const SizedBox.shrink(), child, ], ); diff --git a/lib/main.dart b/lib/main.dart index 1ba5b9e..9e498e6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -36,7 +36,7 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State with SingleTickerProviderStateMixin { Map _data = const {}; - String _path = ''; + // String _path = ''; final List myTabs = [ const Tab(icon: Icon(Icons.edit)), @@ -109,7 +109,7 @@ class _MyHomePageState extends State with SingleTickerProviderStateM }); } - final _formKey = GlobalKey(); + // final _formKey = GlobalKey(); @override Widget build(BuildContext context) { diff --git a/pubspec.lock b/pubspec.lock index 09f9b7f..fad1665 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,14 +7,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.9.0" - audio_session: - dependency: "direct main" - description: - name: audio_session - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.8" + version: "2.8.2" boolean_selector: dependency: transitive description: @@ -28,21 +21,28 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.2.1" + version: "1.2.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" clock: dependency: transitive description: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.1" + version: "1.1.0" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0" + version: "1.16.0" cupertino_icons: dependency: "direct main" description: @@ -56,7 +56,7 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" ffi: dependency: transitive description: @@ -90,20 +90,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.6" - flutter_sound_platform_interface: - dependency: transitive - description: - name: flutter_sound_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "9.2.13" - flutter_sound_web: - dependency: "direct main" - description: - name: flutter_sound_web - url: "https://pub.dartlang.org" - source: hosted - version: "9.2.13" flutter_test: dependency: "direct dev" description: flutter @@ -134,7 +120,7 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.3" + version: "0.6.4" lints: dependency: transitive description: @@ -142,13 +128,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" - logger: - dependency: transitive - description: - name: logger - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" matcher: dependency: transitive description: @@ -162,14 +141,14 @@ packages: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.1.3" + version: "0.1.4" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.7.0" nested: dependency: transitive description: @@ -183,7 +162,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" permission_handler: dependency: "direct main" description: @@ -233,13 +212,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "6.0.3" - rxdart: - dependency: transitive - description: - name: rxdart - url: "https://pub.dartlang.org" - source: hosted - version: "0.27.4" sky_engine: dependency: transitive description: flutter @@ -251,7 +223,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.2" stack_trace: dependency: transitive description: @@ -272,35 +244,28 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.1" + version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.1" + version: "1.2.0" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.8" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0" + version: "0.4.9" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.2" win32: dependency: transitive description: @@ -309,5 +274,5 @@ packages: source: hosted version: "2.6.1" sdks: - dart: ">=2.16.0 <3.0.0" + dart: ">=2.17.0 <3.0.0" flutter: ">=2.8.0" diff --git a/pubspec.yaml b/pubspec.yaml index fd71d98..88c8dbd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,8 +37,6 @@ dependencies: file_picker: ^4.5.0 permission_handler: ^9.2.0 form_field_validator: ^1.1.0 - audio_session: ^0.1.8 - flutter_sound_web: ^9.2.13 dev_dependencies: flutter_test: