From 8386ecb13ce3f914593103a4af3354405f47ea02 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Tue, 12 Mar 2024 14:06:51 +0300 Subject: [PATCH 01/18] pubspec | hmi_networking version bump --- example/pubspec.yaml | 4 ++-- pubspec.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 228db4c..f5d3e15 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,6 +1,6 @@ name: example description: Usage example for hmi_widgets package. -version: 1.0.0+1 +version: 1.0.1 publish_to: 'none' environment: @@ -19,7 +19,7 @@ dependencies: hmi_networking: git: url: https://github.com/a-givertzman/hmi_networking.git - ref: 1.0.0 + ref: 1.1.0 another_flushbar: ^1.12.29 dev_dependencies: diff --git a/pubspec.yaml b/pubspec.yaml index 72079dc..9939b24 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: hmi_widgets description: A Flutter package helps to visualize states, values, changes and other artefacts from technological processes. -version: 1.0.0 +version: 1.0.1 homepage: https://github.com/a-givertzman/hmi_widgets publish_to: none @@ -22,7 +22,7 @@ dependencies: hmi_networking: git: url: https://github.com/a-givertzman/hmi_networking.git - ref: 1.0.0 + ref: 1.1.0 another_flushbar: ^1.12.29 dev_dependencies: From 0cdc457fefe71ccb11dee80b20fa721e68885f73 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Fri, 15 Mar 2024 18:28:32 +0300 Subject: [PATCH 02/18] pabspec | bumped hmi_core version --- example/pubspec.yaml | 2 +- pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/example/pubspec.yaml b/example/pubspec.yaml index f5d3e15..080e603 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -15,7 +15,7 @@ dependencies: hmi_core: git: url: https://github.com/a-givertzman/hmi_core.git - ref: 1.0.0 + ref: 1.0.1 hmi_networking: git: url: https://github.com/a-givertzman/hmi_networking.git diff --git a/pubspec.yaml b/pubspec.yaml index 9939b24..13f2db4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,7 +18,7 @@ dependencies: hmi_core: git: url: https://github.com/a-givertzman/hmi_core.git - ref: 1.0.0 + ref: 1.0.1 hmi_networking: git: url: https://github.com/a-givertzman/hmi_networking.git From 4dad3f8595c5f382c36df0106152ba1f41613c76 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Wed, 20 Mar 2024 04:12:47 +0300 Subject: [PATCH 03/18] Added DsCot usage to DsSend and DsDataPoint --- .../drop_down_control_button/drop_down_control_button.dart | 4 +++- .../drop_down_control_button_depricated.dart | 2 ++ lib/src/edit_field/netword_edit_field/network_edit_field.dart | 2 ++ .../network_dropdown_field/network_dropdown_field.dart | 2 ++ .../indicators/status_indicators/bool_color_indicator.dart | 2 +- lib/src/indicators/value_indicators/text_value_indicator.dart | 2 +- 6 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart index 4435273..b76998f 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart @@ -64,7 +64,7 @@ class DropDownControlButton extends StatefulWidget { if (tagName != null) { return BufferedStream>( dsClient.streamInt(tagName), - initValue: DsDataPoint(type: DsDataType.integer, name: DsPointName('/test/test/test/test'), value: -1, status: DsStatus.ok, timestamp: DsTimeStamp.now().toString()), + initValue: DsDataPoint(type: DsDataType.integer, name: DsPointName('/test/test/test/test'), value: -1, status: DsStatus.ok, cot: DsCot.inf, timestamp: DsTimeStamp.now().toString()), ); } } @@ -277,6 +277,8 @@ class _DropDownControlButtonState extends State with Tick dsClient: dsClient, pointName: writeTagName, response: responseTagName, + cot: DsCot.act, + responseCots: [DsCot.actCon, DsCot.actErr], ) .exec(value) .then((responseValue) { diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart index c0634a5..404cdac 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart @@ -305,6 +305,8 @@ class _DropDownControlButtonState extends State dsClient: dsClient, pointName: writeTagName, response: responseTagName, + cot: DsCot.act, + responseCots: [DsCot.actCon, DsCot.actErr], ) .exec(value) .then((responseValue) { diff --git a/lib/src/edit_field/netword_edit_field/network_edit_field.dart b/lib/src/edit_field/netword_edit_field/network_edit_field.dart index a0b5e55..4c323a7 100644 --- a/lib/src/edit_field/netword_edit_field/network_edit_field.dart +++ b/lib/src/edit_field/netword_edit_field/network_edit_field.dart @@ -334,6 +334,8 @@ class _NetworkEditFieldState extends State> { pointName: writeTagName, response: responseTagName, responseTimeout: _responseTimeout, + cot: DsCot.act, + responseCots: [DsCot.actCon, DsCot.actErr], ).exec(value).then((responseValue) { setState(() { switch (responseValue) { diff --git a/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart b/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart index 80e1c8e..a8e19c6 100644 --- a/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart +++ b/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart @@ -188,6 +188,8 @@ class _NetworkDropdownFormFieldState extends State { pointName: writeTagName, response: responseTagName, responseTimeout: _responseTimeout, + cot: DsCot.act, + responseCots: [DsCot.actCon, DsCot.actErr], ) .exec(value) .then((responseValue) { diff --git a/lib/src/indicators/status_indicators/bool_color_indicator.dart b/lib/src/indicators/status_indicators/bool_color_indicator.dart index 2e992ab..e67a9dd 100644 --- a/lib/src/indicators/status_indicators/bool_color_indicator.dart +++ b/lib/src/indicators/status_indicators/bool_color_indicator.dart @@ -61,7 +61,7 @@ class _BoolColorIndicatorState extends State { _invalidValueColor = Theme.of(context).stateColors.invalid; return StreamBuilder>( initialData: DsDataPoint( - type: DsDataType.bool, name: DsPointName('/test'), value: false, status: DsStatus.obsolete, timestamp: '', + type: DsDataType.bool, name: DsPointName('/test'), value: false, status: DsStatus.obsolete, cot: DsCot.inf, timestamp: '', ), stream: _stream, builder: (context, snapshot) { diff --git a/lib/src/indicators/value_indicators/text_value_indicator.dart b/lib/src/indicators/value_indicators/text_value_indicator.dart index af902b1..0de209a 100644 --- a/lib/src/indicators/value_indicators/text_value_indicator.dart +++ b/lib/src/indicators/value_indicators/text_value_indicator.dart @@ -74,7 +74,7 @@ class _TextValueIndicatorState extends State { _unitTextStyle = Theme.of(context).textTheme.bodySmall ?? const TextStyle(); return StreamBuilder>( initialData: DsDataPoint( - type: DsDataType.bool, name: DsPointName('/test'), value: 0.0, status: DsStatus.obsolete, timestamp: '', + type: DsDataType.bool, name: DsPointName('/test'), value: 0.0, status: DsStatus.obsolete, cot: DsCot.inf, timestamp: '', ), stream: _stream, builder: (context, snapshot) { From 311194fe7d39a14bb783525afc018fda7e0633aa Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Wed, 20 Mar 2024 13:51:31 +0300 Subject: [PATCH 04/18] Added config files for macos/ios --- example/ios/Flutter/Debug.xcconfig | 1 + example/ios/Flutter/Release.xcconfig | 1 + example/ios/Podfile | 44 +++++++++++++++++++ example/macos/Flutter/Flutter-Debug.xcconfig | 1 + .../macos/Flutter/Flutter-Release.xcconfig | 1 + example/macos/Podfile | 43 ++++++++++++++++++ 6 files changed, 91 insertions(+) create mode 100644 example/ios/Podfile create mode 100644 example/macos/Podfile diff --git a/example/ios/Flutter/Debug.xcconfig b/example/ios/Flutter/Debug.xcconfig index 592ceee..ec97fc6 100644 --- a/example/ios/Flutter/Debug.xcconfig +++ b/example/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/example/ios/Flutter/Release.xcconfig b/example/ios/Flutter/Release.xcconfig index 592ceee..c4855bf 100644 --- a/example/ios/Flutter/Release.xcconfig +++ b/example/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/example/ios/Podfile b/example/ios/Podfile new file mode 100644 index 0000000..d97f17e --- /dev/null +++ b/example/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '12.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/example/macos/Flutter/Flutter-Debug.xcconfig b/example/macos/Flutter/Flutter-Debug.xcconfig index c2efd0b..4b81f9b 100644 --- a/example/macos/Flutter/Flutter-Debug.xcconfig +++ b/example/macos/Flutter/Flutter-Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/macos/Flutter/Flutter-Release.xcconfig b/example/macos/Flutter/Flutter-Release.xcconfig index c2efd0b..5caa9d1 100644 --- a/example/macos/Flutter/Flutter-Release.xcconfig +++ b/example/macos/Flutter/Flutter-Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/example/macos/Podfile b/example/macos/Podfile new file mode 100644 index 0000000..c795730 --- /dev/null +++ b/example/macos/Podfile @@ -0,0 +1,43 @@ +platform :osx, '10.14' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end From ff812ae622197e3fe3776613f3499ef11a7bab2f Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Wed, 20 Mar 2024 13:55:34 +0300 Subject: [PATCH 05/18] Added DsCot usage due to hmi_core changes --- example/lib/core/get_random_stream.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/example/lib/core/get_random_stream.dart b/example/lib/core/get_random_stream.dart index 266f0f6..af3405d 100644 --- a/example/lib/core/get_random_stream.dart +++ b/example/lib/core/get_random_stream.dart @@ -12,6 +12,7 @@ Stream> getRandomDataPointStream( name: DsPointName('/test'), value: randomDelegate(random), status: DsStatus.ok, + cot: DsCot.inf, timestamp: DsTimeStamp.now().toString(), ), duration: duration, From ae70e3a1934b2c8f035d56b6eb831b596857b426 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Fri, 22 Mar 2024 04:08:59 +0300 Subject: [PATCH 06/18] pubspec | bumped hmi_core version --- example/pubspec.yaml | 2 +- pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 080e603..bc3cc1a 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -15,7 +15,7 @@ dependencies: hmi_core: git: url: https://github.com/a-givertzman/hmi_core.git - ref: 1.0.1 + ref: 2.0.0 hmi_networking: git: url: https://github.com/a-givertzman/hmi_networking.git diff --git a/pubspec.yaml b/pubspec.yaml index 13f2db4..81ad851 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,7 +18,7 @@ dependencies: hmi_core: git: url: https://github.com/a-givertzman/hmi_core.git - ref: 1.0.1 + ref: 2.0.0 hmi_networking: git: url: https://github.com/a-givertzman/hmi_networking.git From 37f454e21bc9d5da0ccfd47c0bdb4fc3f734ef45 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Tue, 26 Mar 2024 20:22:54 +0300 Subject: [PATCH 07/18] common | Inserted additional cot in DsSend usages --- .../drop_down_control_button/drop_down_control_button.dart | 2 +- .../drop_down_control_button_depricated.dart | 2 +- lib/src/edit_field/netword_edit_field/network_edit_field.dart | 2 +- .../network_dropdown_field/network_dropdown_field.dart | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart index b76998f..9824c4a 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart @@ -278,7 +278,7 @@ class _DropDownControlButtonState extends State with Tick pointName: writeTagName, response: responseTagName, cot: DsCot.act, - responseCots: [DsCot.actCon, DsCot.actErr], + responseCots: [DsCot.actCon, DsCot.actErr, DsCot.inf], ) .exec(value) .then((responseValue) { diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart index 404cdac..7415149 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart @@ -306,7 +306,7 @@ class _DropDownControlButtonState extends State pointName: writeTagName, response: responseTagName, cot: DsCot.act, - responseCots: [DsCot.actCon, DsCot.actErr], + responseCots: [DsCot.actCon, DsCot.actErr, DsCot.inf], ) .exec(value) .then((responseValue) { diff --git a/lib/src/edit_field/netword_edit_field/network_edit_field.dart b/lib/src/edit_field/netword_edit_field/network_edit_field.dart index 4c323a7..137597b 100644 --- a/lib/src/edit_field/netword_edit_field/network_edit_field.dart +++ b/lib/src/edit_field/netword_edit_field/network_edit_field.dart @@ -335,7 +335,7 @@ class _NetworkEditFieldState extends State> { response: responseTagName, responseTimeout: _responseTimeout, cot: DsCot.act, - responseCots: [DsCot.actCon, DsCot.actErr], + responseCots: [DsCot.actCon, DsCot.actErr, DsCot.inf], ).exec(value).then((responseValue) { setState(() { switch (responseValue) { diff --git a/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart b/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart index a8e19c6..73bc34e 100644 --- a/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart +++ b/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart @@ -189,7 +189,7 @@ class _NetworkDropdownFormFieldState extends State { response: responseTagName, responseTimeout: _responseTimeout, cot: DsCot.act, - responseCots: [DsCot.actCon, DsCot.actErr], + responseCots: [DsCot.actCon, DsCot.actErr, DsCot.inf], ) .exec(value) .then((responseValue) { From 7391b7439d2cfdcdb1d60c2aabd3cc0d02582d74 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Tue, 26 Mar 2024 21:00:07 +0300 Subject: [PATCH 08/18] DsSend | Removed response point name to await the same point according to protocol --- .../drop_down_control_button/drop_down_control_button.dart | 1 - .../drop_down_control_button_depricated.dart | 1 - lib/src/edit_field/netword_edit_field/network_edit_field.dart | 1 - .../network_dropdown_field/network_dropdown_field.dart | 1 - 4 files changed, 4 deletions(-) diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart index 9824c4a..6c31828 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart @@ -276,7 +276,6 @@ class _DropDownControlButtonState extends State with Tick DsSend( dsClient: dsClient, pointName: writeTagName, - response: responseTagName, cot: DsCot.act, responseCots: [DsCot.actCon, DsCot.actErr, DsCot.inf], ) diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart index 7415149..49b324f 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart @@ -304,7 +304,6 @@ class _DropDownControlButtonState extends State DsSend( dsClient: dsClient, pointName: writeTagName, - response: responseTagName, cot: DsCot.act, responseCots: [DsCot.actCon, DsCot.actErr, DsCot.inf], ) diff --git a/lib/src/edit_field/netword_edit_field/network_edit_field.dart b/lib/src/edit_field/netword_edit_field/network_edit_field.dart index 137597b..a16628b 100644 --- a/lib/src/edit_field/netword_edit_field/network_edit_field.dart +++ b/lib/src/edit_field/netword_edit_field/network_edit_field.dart @@ -332,7 +332,6 @@ class _NetworkEditFieldState extends State> { DsSend( dsClient: dsClient, pointName: writeTagName, - response: responseTagName, responseTimeout: _responseTimeout, cot: DsCot.act, responseCots: [DsCot.actCon, DsCot.actErr, DsCot.inf], diff --git a/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart b/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart index 73bc34e..2130e88 100644 --- a/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart +++ b/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart @@ -186,7 +186,6 @@ class _NetworkDropdownFormFieldState extends State { DsSend( dsClient: dsClient, pointName: writeTagName, - response: responseTagName, responseTimeout: _responseTimeout, cot: DsCot.act, responseCots: [DsCot.actCon, DsCot.actErr, DsCot.inf], From ece871325792184eed0f383fe9694df6ecf97900 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Sat, 30 Mar 2024 14:52:49 +0300 Subject: [PATCH 09/18] DropDownControlButton | Added optional loadingWhile parameter --- .../drop_down_control_button.dart | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart index 6c31828..73b19ba 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart @@ -4,6 +4,10 @@ import 'package:flutter/material.dart'; import 'package:hmi_networking/hmi_networking.dart'; import 'package:hmi_core/hmi_core.dart'; import 'package:hmi_widgets/hmi_widgets.dart'; +enum DisplayLoadingWhile { + writeTagResponsed, + responseTagResponded, +} /// /// Кнопка посылает значение bool / int / real в DsClient class DropDownControlButton extends StatefulWidget { @@ -14,6 +18,7 @@ class DropDownControlButton extends StatefulWidget { final DsClient? _dsClient; final DsPointName? _writeTagName; final String? _responseTagName; + final DisplayLoadingWhile _loadingWhile; final Map _items; final String? _tooltip; final String? _label; @@ -30,6 +35,7 @@ class DropDownControlButton extends StatefulWidget { required Map items, String? tooltip, String? label, + DisplayLoadingWhile loadingWhile = DisplayLoadingWhile.responseTagResponded, }) : _disabledStream = disabledStream, _itemsDisabledStreams = itemsDisabledStreams, @@ -41,6 +47,7 @@ class DropDownControlButton extends StatefulWidget { _items = items, _tooltip = tooltip, _label = label, + _loadingWhile = loadingWhile, super(key: key); // @override @@ -57,6 +64,7 @@ class DropDownControlButton extends StatefulWidget { items: _items, tooltip: _tooltip, label: _label, + loadingWhile: _loadingWhile, ); /// BufferedStream>? _buildResponseSTream(DsClient? dsClient, String? tagName) { @@ -91,6 +99,7 @@ class _DropDownControlButtonState extends State with Tick final Map _itemsDisabled = {}; late AnimationController _animationController; final StreamController _streamController = StreamController(); + final DisplayLoadingWhile _loadingWhile; /// _DropDownControlButtonState({ required BufferedStream? isDisabledStream, @@ -104,6 +113,7 @@ class _DropDownControlButtonState extends State with Tick required Map items, required String? tooltip, required String? label, + required DisplayLoadingWhile loadingWhile, }) : _isDisabledStream = isDisabledStream, _itemsDisabledStreams = itemsDisabledStreams, @@ -116,6 +126,7 @@ class _DropDownControlButtonState extends State with Tick _items = items, _tooltip = tooltip, _label = label, + _loadingWhile = loadingWhile, super(); // @override @@ -137,7 +148,7 @@ class _DropDownControlButtonState extends State with Tick _itemDisabledSuscriptions.add(itemDisabledSuscription); }); final responseStream = _responseStream; - responseStream?.stream.listen((event) { + responseStream?.stream.listen((event) { if (_state.isLoading) { _state.setLoaded(); } @@ -275,14 +286,18 @@ class _DropDownControlButtonState extends State with Tick if (mounted) setState(() => _state.setSaving()); DsSend( dsClient: dsClient, - pointName: writeTagName, + pointName: writeTagName, + response: switch(_loadingWhile) { + DisplayLoadingWhile.writeTagResponsed => null, + DisplayLoadingWhile.responseTagResponded => _responseTagName, + }, cot: DsCot.act, responseCots: [DsCot.actCon, DsCot.actErr, DsCot.inf], ) - .exec(value) - .then((responseValue) { - if (mounted) setState(() => _state.setSaved()); - }); + .exec(value) + .then((responseValue) { + if (mounted) setState(() => _state.setSaved()); + }); } } // From 85746cf4b23a21f0b1202dfc080b850fa0c00fe2 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Sat, 30 Mar 2024 15:48:47 +0300 Subject: [PATCH 10/18] DropDownControlButton | Added condition for differend response cots on send --- .../drop_down_control_button.dart | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart index 73b19ba..3df0716 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:hmi_networking/hmi_networking.dart'; import 'package:hmi_core/hmi_core.dart'; import 'package:hmi_widgets/hmi_widgets.dart'; -enum DisplayLoadingWhile { +enum DisplayLoadingUntil { writeTagResponsed, responseTagResponded, } @@ -18,7 +18,7 @@ class DropDownControlButton extends StatefulWidget { final DsClient? _dsClient; final DsPointName? _writeTagName; final String? _responseTagName; - final DisplayLoadingWhile _loadingWhile; + final DisplayLoadingUntil _loadingWhile; final Map _items; final String? _tooltip; final String? _label; @@ -35,7 +35,7 @@ class DropDownControlButton extends StatefulWidget { required Map items, String? tooltip, String? label, - DisplayLoadingWhile loadingWhile = DisplayLoadingWhile.responseTagResponded, + DisplayLoadingUntil loadingWhile = DisplayLoadingUntil.responseTagResponded, }) : _disabledStream = disabledStream, _itemsDisabledStreams = itemsDisabledStreams, @@ -99,7 +99,7 @@ class _DropDownControlButtonState extends State with Tick final Map _itemsDisabled = {}; late AnimationController _animationController; final StreamController _streamController = StreamController(); - final DisplayLoadingWhile _loadingWhile; + final DisplayLoadingUntil _loadingWhile; /// _DropDownControlButtonState({ required BufferedStream? isDisabledStream, @@ -113,7 +113,7 @@ class _DropDownControlButtonState extends State with Tick required Map items, required String? tooltip, required String? label, - required DisplayLoadingWhile loadingWhile, + required DisplayLoadingUntil loadingWhile, }) : _isDisabledStream = isDisabledStream, _itemsDisabledStreams = itemsDisabledStreams, @@ -288,11 +288,14 @@ class _DropDownControlButtonState extends State with Tick dsClient: dsClient, pointName: writeTagName, response: switch(_loadingWhile) { - DisplayLoadingWhile.writeTagResponsed => null, - DisplayLoadingWhile.responseTagResponded => _responseTagName, + DisplayLoadingUntil.writeTagResponsed => null, + DisplayLoadingUntil.responseTagResponded => _responseTagName, }, cot: DsCot.act, - responseCots: [DsCot.actCon, DsCot.actErr, DsCot.inf], + responseCots: switch(_loadingWhile) { + DisplayLoadingUntil.writeTagResponsed => [DsCot.actCon, DsCot.actErr], + DisplayLoadingUntil.responseTagResponded => [DsCot.inf], + }, ) .exec(value) .then((responseValue) { From 69ba6faf841aba7e9a85fcd44c08bdb0f9c0f001 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Sat, 30 Mar 2024 15:55:52 +0300 Subject: [PATCH 11/18] DropDownControlButton | Renamed param loadingWhile to loadingUntil --- .../drop_down_control_button.dart | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart index 3df0716..647d36b 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart @@ -4,7 +4,8 @@ import 'package:flutter/material.dart'; import 'package:hmi_networking/hmi_networking.dart'; import 'package:hmi_core/hmi_core.dart'; import 'package:hmi_widgets/hmi_widgets.dart'; -enum DisplayLoadingUntil { +/// +enum LoadingUntil { writeTagResponsed, responseTagResponded, } @@ -18,7 +19,7 @@ class DropDownControlButton extends StatefulWidget { final DsClient? _dsClient; final DsPointName? _writeTagName; final String? _responseTagName; - final DisplayLoadingUntil _loadingWhile; + final LoadingUntil _loadingUntil; final Map _items; final String? _tooltip; final String? _label; @@ -35,7 +36,7 @@ class DropDownControlButton extends StatefulWidget { required Map items, String? tooltip, String? label, - DisplayLoadingUntil loadingWhile = DisplayLoadingUntil.responseTagResponded, + LoadingUntil loadingUntil = LoadingUntil.responseTagResponded, }) : _disabledStream = disabledStream, _itemsDisabledStreams = itemsDisabledStreams, @@ -47,7 +48,7 @@ class DropDownControlButton extends StatefulWidget { _items = items, _tooltip = tooltip, _label = label, - _loadingWhile = loadingWhile, + _loadingUntil = loadingUntil, super(key: key); // @override @@ -64,7 +65,7 @@ class DropDownControlButton extends StatefulWidget { items: _items, tooltip: _tooltip, label: _label, - loadingWhile: _loadingWhile, + loadingUntil: _loadingUntil, ); /// BufferedStream>? _buildResponseSTream(DsClient? dsClient, String? tagName) { @@ -99,7 +100,7 @@ class _DropDownControlButtonState extends State with Tick final Map _itemsDisabled = {}; late AnimationController _animationController; final StreamController _streamController = StreamController(); - final DisplayLoadingUntil _loadingWhile; + final LoadingUntil _loadingUntil; /// _DropDownControlButtonState({ required BufferedStream? isDisabledStream, @@ -113,7 +114,7 @@ class _DropDownControlButtonState extends State with Tick required Map items, required String? tooltip, required String? label, - required DisplayLoadingUntil loadingWhile, + required LoadingUntil loadingUntil, }) : _isDisabledStream = isDisabledStream, _itemsDisabledStreams = itemsDisabledStreams, @@ -126,7 +127,7 @@ class _DropDownControlButtonState extends State with Tick _items = items, _tooltip = tooltip, _label = label, - _loadingWhile = loadingWhile, + _loadingUntil = loadingUntil, super(); // @override @@ -287,14 +288,14 @@ class _DropDownControlButtonState extends State with Tick DsSend( dsClient: dsClient, pointName: writeTagName, - response: switch(_loadingWhile) { - DisplayLoadingUntil.writeTagResponsed => null, - DisplayLoadingUntil.responseTagResponded => _responseTagName, + response: switch(_loadingUntil) { + LoadingUntil.writeTagResponsed => null, + LoadingUntil.responseTagResponded => _responseTagName, }, cot: DsCot.act, - responseCots: switch(_loadingWhile) { - DisplayLoadingUntil.writeTagResponsed => [DsCot.actCon, DsCot.actErr], - DisplayLoadingUntil.responseTagResponded => [DsCot.inf], + responseCots: switch(_loadingUntil) { + LoadingUntil.writeTagResponsed => [DsCot.actCon, DsCot.actErr], + LoadingUntil.responseTagResponded => [DsCot.inf], }, ) .exec(value) From 5f5b8df2beecd1dbe1c8e26a9e6f0f2e9f459f5a Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Sat, 30 Mar 2024 16:01:37 +0300 Subject: [PATCH 12/18] LoadingUntil | fixed typo --- .../drop_down_control_button.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart index 647d36b..6d8f34c 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart @@ -7,7 +7,7 @@ import 'package:hmi_widgets/hmi_widgets.dart'; /// enum LoadingUntil { writeTagResponsed, - responseTagResponded, + responseTagResponsed, } /// /// Кнопка посылает значение bool / int / real в DsClient @@ -36,7 +36,7 @@ class DropDownControlButton extends StatefulWidget { required Map items, String? tooltip, String? label, - LoadingUntil loadingUntil = LoadingUntil.responseTagResponded, + LoadingUntil loadingUntil = LoadingUntil.responseTagResponsed, }) : _disabledStream = disabledStream, _itemsDisabledStreams = itemsDisabledStreams, @@ -290,12 +290,12 @@ class _DropDownControlButtonState extends State with Tick pointName: writeTagName, response: switch(_loadingUntil) { LoadingUntil.writeTagResponsed => null, - LoadingUntil.responseTagResponded => _responseTagName, + LoadingUntil.responseTagResponsed => _responseTagName, }, cot: DsCot.act, responseCots: switch(_loadingUntil) { LoadingUntil.writeTagResponsed => [DsCot.actCon, DsCot.actErr], - LoadingUntil.responseTagResponded => [DsCot.inf], + LoadingUntil.responseTagResponsed => [DsCot.inf], }, ) .exec(value) From c728f020334438ddcd7d3aeedb81f176776d81b9 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Sat, 30 Mar 2024 16:03:54 +0300 Subject: [PATCH 13/18] LoadingUntil | fixed typo --- .../drop_down_control_button.dart | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart index 6d8f34c..a32c339 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button.dart @@ -6,8 +6,8 @@ import 'package:hmi_core/hmi_core.dart'; import 'package:hmi_widgets/hmi_widgets.dart'; /// enum LoadingUntil { - writeTagResponsed, - responseTagResponsed, + writeTagResponded, + responseTagResponded, } /// /// Кнопка посылает значение bool / int / real в DsClient @@ -36,7 +36,7 @@ class DropDownControlButton extends StatefulWidget { required Map items, String? tooltip, String? label, - LoadingUntil loadingUntil = LoadingUntil.responseTagResponsed, + LoadingUntil loadingUntil = LoadingUntil.responseTagResponded, }) : _disabledStream = disabledStream, _itemsDisabledStreams = itemsDisabledStreams, @@ -289,13 +289,13 @@ class _DropDownControlButtonState extends State with Tick dsClient: dsClient, pointName: writeTagName, response: switch(_loadingUntil) { - LoadingUntil.writeTagResponsed => null, - LoadingUntil.responseTagResponsed => _responseTagName, + LoadingUntil.writeTagResponded => null, + LoadingUntil.responseTagResponded => _responseTagName, }, cot: DsCot.act, responseCots: switch(_loadingUntil) { - LoadingUntil.writeTagResponsed => [DsCot.actCon, DsCot.actErr], - LoadingUntil.responseTagResponsed => [DsCot.inf], + LoadingUntil.writeTagResponded => [DsCot.actCon, DsCot.actErr], + LoadingUntil.responseTagResponded => [DsCot.inf], }, ) .exec(value) From c66fe7e72f1f2e108a26740833f066e79cbfc5cd Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Fri, 5 Apr 2024 16:28:05 +0300 Subject: [PATCH 14/18] common | upgraded log calls --- .../control_button/control_button_indicator.dart | 10 +++++----- .../drop_down_control_button_depricated.dart | 10 +++++----- .../crane_load_chart/crane_load_point_painter.dart | 6 ++---- .../crane_position_chart/crane_position_painter.dart | 4 ++-- lib/src/dialogs/auth_dialog.dart | 8 ++++---- lib/src/edit_field/network_field_authenticate.dart | 4 ++-- .../status_indicators/bool_color_indicator.dart | 10 +++++----- .../status_indicators/dps_icon_indicator.dart | 6 +++--- .../status_indicators/sps_icon_indicator.dart | 7 ++++--- .../value_indicators/text_value_indicator.dart | 8 ++++---- 10 files changed, 36 insertions(+), 37 deletions(-) diff --git a/lib/src/buttons/control_button/control_button_indicator.dart b/lib/src/buttons/control_button/control_button_indicator.dart index 25f90fa..c4a0af8 100644 --- a/lib/src/buttons/control_button/control_button_indicator.dart +++ b/lib/src/buttons/control_button/control_button_indicator.dart @@ -39,7 +39,7 @@ class ControlButtonIndicator extends StatefulWidget { /// class _ControlButtonIndicatorState extends State with TickerProviderStateMixin { - static const _debug = false; + static const _log = Log('_ControlButtonIndicatorState'); final Stream>? _stream; final List _stateValues; final String? _caption; @@ -66,7 +66,7 @@ class _ControlButtonIndicatorState extends State with Ti _stateColor = stateColor, _captionColor = captionColor, super() { - log(_debug, '[$_ControlButtonIndicatorState]'); + _log.debug('[$_ControlButtonIndicatorState]'); } // @override @@ -114,15 +114,15 @@ class _ControlButtonIndicatorState extends State with Ti } } } else { - log(_debug, '[$_ControlButtonIndicatorState._build] snapshot.connectionState: ', snapshot.connectionState); + _log.debug('[._build] snapshot.connectionState: ${snapshot.connectionState}'); } } else { - log(_debug, '[$_ControlButtonIndicatorState._build] snapshot.connectionState: ', snapshot.connectionState); + _log.debug('[._build] snapshot.connectionState: ${snapshot.connectionState}'); } final fontSize = stateTextStyle.fontSize; final stateTextHeight = stateTextStyle.height; final boxHeight = stateTextHeight ?? (fontSize != null ? fontSize * 1.5 : 18); - // log(_debug, '[$_ControlButtonIndicatorState._build] boxHeight: ', boxHeight); + // _log.debug('[._build] boxHeight: $boxHeight'); return SizedBox( height: boxHeight * 1.0 + padding * 2, child: Stack( diff --git a/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart b/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart index 49b324f..ab748e6 100644 --- a/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart +++ b/lib/src/buttons/drop_down_control_button/drop_down_control_button_depricated.dart @@ -62,7 +62,7 @@ class DropDownControlButtonDepricated extends StatefulWidget { /// class _DropDownControlButtonState extends State with TickerProviderStateMixin { - static const _debug = true; + static const _log = Log('_DropDownControlButtonState'); final _state = NetworkOperationState(isLoading: true); final double? _width; final double? _height; @@ -117,7 +117,7 @@ class _DropDownControlButtonState extends State if (itemsDisabledStreams != null) { itemsDisabledStreams.forEach((index, itemDisabledStream) { final itemDisabledSuscription = itemDisabledStream.listen((event) { - log(_debug, '[$_DropDownControlButtonState.initState] index: $index\tevent: $event'); + _log.debug('[.initState] index: $index\tevent: $event'); _itemsDisabled[index] = event; }); _itemDisabledSuscriptions.add(itemDisabledSuscription); @@ -157,7 +157,7 @@ class _DropDownControlButtonState extends State _lastSelectedValue = point?.value ?? _lastSelectedValue; _isDisabled = snapshots.data?.value2 ?? _isDisabled; } - log(_debug, '$_DropDownControlButtonState.build isDisabled: ', _isDisabled); + _log.debug('.build isDisabled: $_isDisabled'); return PopupMenuButtonCustom( // color: backgroundColor, offset: Offset(width != null ? width * 0.7 : 100, height ?? 0), @@ -218,10 +218,10 @@ class _DropDownControlButtonState extends State }).values.toList(); }, onCanceled: () { - log(_debug, '[$_DropDownControlButtonState] onCanceled'); + _log.debug('[$_DropDownControlButtonState] onCanceled'); }, onSelected: (value) { - log(_debug, '[$_DropDownControlButtonState] onSelected: ', value); + _log.debug('[$_DropDownControlButtonState] onSelected: $value'); if (_items.containsKey(value)) { final sendValue = value; if (sendValue != _lastSelectedValue) { diff --git a/lib/src/charts/crane_load_chart/crane_load_point_painter.dart b/lib/src/charts/crane_load_chart/crane_load_point_painter.dart index 7034702..392d926 100644 --- a/lib/src/charts/crane_load_chart/crane_load_point_painter.dart +++ b/lib/src/charts/crane_load_chart/crane_load_point_painter.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:hmi_core/hmi_core_log.dart'; /// class CraneLoadPointPainter extends CustomPainter { - static const _debug = false; + static const _log = Log('CraneLoadPointPainter'); final Map _xAxis; final Map _yAxis; final bool _showGrrid; @@ -39,9 +39,7 @@ class CraneLoadPointPainter extends CustomPainter { // @override void paint(Canvas canvas, Size size) { - log(_debug, '[$CraneLoadPointPainter.paint]'); - log(_debug, '[$CraneLoadPointPainter.paint] xAxis: ', _xAxis); - log(_debug, '[$CraneLoadPointPainter.paint] yAxis: ', _yAxis); + _log.debug('[.paint] xAxis: $_xAxis | yAxis: $_yAxis'); _drawBackgroundRect(canvas, size); _drawXaxis(canvas, size); _drawYaxis(canvas, size); diff --git a/lib/src/charts/crane_position_chart/crane_position_painter.dart b/lib/src/charts/crane_position_chart/crane_position_painter.dart index 3134288..93bfdac 100644 --- a/lib/src/charts/crane_position_chart/crane_position_painter.dart +++ b/lib/src/charts/crane_position_chart/crane_position_painter.dart @@ -5,7 +5,7 @@ import 'package:hmi_core/hmi_core_log.dart'; import 'crane_position_chart.dart'; /// class CranePositionPainter extends CustomPainter { - static const _debug = false; + static const _log = Log('CranePositionPainter'); final DrawingController _drawingController; final int code; final Size size; @@ -29,7 +29,7 @@ class CranePositionPainter extends CustomPainter { // @override void paint(Canvas canvas, Size size) { - log(_debug, '[$CranePositionPainter.paint]'); + _log.debug('[.paint]'); final Color verticalLineColor; if (_drawingController.isXValid) { verticalLineColor = _drawingController.swlProtection diff --git a/lib/src/dialogs/auth_dialog.dart b/lib/src/dialogs/auth_dialog.dart index 4fd49fb..1422797 100644 --- a/lib/src/dialogs/auth_dialog.dart +++ b/lib/src/dialogs/auth_dialog.dart @@ -31,7 +31,7 @@ class AuthDialog extends StatefulWidget { /// class _AuthDialogState extends State { - static const _debug = true; + static const _log = Log('_AuthDialogState'); final AppUserSingle? _currentUser; final Duration? _flushBarDuration; late Authenticate _auth; @@ -56,7 +56,7 @@ class _AuthDialogState extends State { // @override Widget build(BuildContext context) { - log(_debug, '[_AuthDialogState.build]'); + _log.debug('[.build]'); const paddingValue = 13.0; return Scaffold( // ignoring: true, @@ -173,7 +173,7 @@ class _AuthDialogState extends State { final flushBarDuration = _flushBarDuration ?? Duration( milliseconds: const Setting('flushBarDurationMedium').toInt, ); - log(_debug, '[_AuthDialogState._onComplete] cancel: $cancel'); + _log.debug('[._onComplete] cancel: $cancel'); if (cancel) { Navigator.of(context).pop( AuthResult( @@ -216,7 +216,7 @@ class _AuthDialogState extends State { }); } else { final message = _buildWrongLoginPassMessage(); - log(_debug, '[_AuthDialogState._onComplete] message: $message'); + _log.debug('[._onComplete] message: $message'); FlushbarHelper.createError( duration: flushBarDuration, title: const Localized('Authentication').v, diff --git a/lib/src/edit_field/network_field_authenticate.dart b/lib/src/edit_field/network_field_authenticate.dart index 64d8e1a..a3e52e2 100644 --- a/lib/src/edit_field/network_field_authenticate.dart +++ b/lib/src/edit_field/network_field_authenticate.dart @@ -9,7 +9,7 @@ import 'package:hmi_widgets/src/dialogs/auth_dialog.dart'; AppUserStacked users, Authenticate auth, ) { - const _debug = true; + const _log = Log('networkFieldAuthenticate'); final flushBarDuration = Duration( milliseconds: const Setting('flushBarDurationMedium').toInt, ); @@ -24,7 +24,7 @@ import 'package:hmi_widgets/src/dialogs/auth_dialog.dart'; settings: const RouteSettings(name: "/authDialog"), ), ).then((authResult) { - log(_debug, '[_authenticate] authResult: ', authResult); + _log.debug( 'authResult: $authResult'); final result = authResult; if (result != null) { if (result.authenticated) { diff --git a/lib/src/indicators/status_indicators/bool_color_indicator.dart b/lib/src/indicators/status_indicators/bool_color_indicator.dart index e67a9dd..6aa04c3 100644 --- a/lib/src/indicators/status_indicators/bool_color_indicator.dart +++ b/lib/src/indicators/status_indicators/bool_color_indicator.dart @@ -36,7 +36,7 @@ class BoolColorIndicator extends StatefulWidget { /// class _BoolColorIndicatorState extends State { - static const _debug = true; + static const _log = Log('_BoolColorIndicatorState'); final Stream>? _stream; final Color? _trueColor; final Color? _falseColor; @@ -95,19 +95,19 @@ class _BoolColorIndicatorState extends State { final trueColor = _trueColor ?? Theme.of(context).stateColors.on; final falseColor = _falseColor ?? Theme.of(context).stateColors.off; Color? color; - // log(_debug, '[$_BoolColorIndicatorState._buildColor] snapshot: ', snapshot); + // _log.debug('[._buildColor] snapshot: $snapshot'); if (snapshot.hasError) { color = _invalidValueColor; - log(_debug, '[$_BoolColorIndicatorState._buildColor] snapshot.error: ', snapshot.error); + _log.debug('[._buildColor] snapshot.error: ${snapshot.error}'); } else if (snapshot.hasData) { final point = snapshot.data; if (point != null) { color = point.value ? trueColor : falseColor; } else { - log(_debug, '[$_BoolColorIndicatorState._build] snapshot.connectionState: ', snapshot.connectionState); + _log.debug('[._build] snapshot.connectionState: ${snapshot.connectionState}'); } } else { - log(_debug, '[$_BoolColorIndicatorState._build] snapshot.connectionState: ', snapshot.connectionState); + _log.debug('[._build] snapshot.connectionState: ${snapshot.connectionState}'); } return color; } diff --git a/lib/src/indicators/status_indicators/dps_icon_indicator.dart b/lib/src/indicators/status_indicators/dps_icon_indicator.dart index c981dab..4048089 100644 --- a/lib/src/indicators/status_indicators/dps_icon_indicator.dart +++ b/lib/src/indicators/status_indicators/dps_icon_indicator.dart @@ -51,7 +51,7 @@ class DpsIconIndicator extends StatefulWidget { /// class _DpsIconIndicatorState extends State { - static const _debug = true; + static const _log = Log('_DpsIconIndicatorState'); late DsDataStreamExtract _extractDsDataStream; final Stream>? _inputStream; final Widget? _posUndefinedIcon; @@ -168,10 +168,10 @@ class _DpsIconIndicatorState extends State { ); } } else { - log(_debug, '[$_DpsIconIndicatorState._build] snapshot.connectionState: ', snapshot.connectionState); + _log.debug( '[$_DpsIconIndicatorState._build] snapshot.connectionState: ${snapshot.connectionState}'); } } else { - log(_debug, '[$_DpsIconIndicatorState._build] snapshot.connectionState: ', snapshot.connectionState); + _log.debug('[._build] snapshot.connectionState: ${snapshot.connectionState}'); } return posUndefinedIcon ?? _undefinedIconDefault(context, color); } diff --git a/lib/src/indicators/status_indicators/sps_icon_indicator.dart b/lib/src/indicators/status_indicators/sps_icon_indicator.dart index 52f3dbe..aa6148a 100644 --- a/lib/src/indicators/status_indicators/sps_icon_indicator.dart +++ b/lib/src/indicators/status_indicators/sps_icon_indicator.dart @@ -33,7 +33,7 @@ class SpsIconIndicator extends StatefulWidget { /// class _SpsIconIndicatorState extends State { - static const _debug = true; + static const _log = Log('_SpsIconIndicatorState'); final Stream>? _stream; final Icon? _trueIcon; final Icon? _falseIcon; @@ -87,10 +87,11 @@ class _SpsIconIndicatorState extends State { return falseIcon ?? _falseIconDefault(context, color); } } else { - log(_debug, '[$_SpsIconIndicatorState._build] snapshot.connectionState: ', snapshot.connectionState); + _log.debug('[._build] snapshot.connectionState: ${snapshot.connectionState}'); } } else { - log(_debug, '[$_SpsIconIndicatorState._build] snapshot.connectionState: ', snapshot.connectionState); + _log.debug('[._build] snapshot.connectionState: ${snapshot.connectionState}'); + } return falseIcon ?? _falseIconDefault(context, color); } diff --git a/lib/src/indicators/value_indicators/text_value_indicator.dart b/lib/src/indicators/value_indicators/text_value_indicator.dart index 0de209a..62c9bc4 100644 --- a/lib/src/indicators/value_indicators/text_value_indicator.dart +++ b/lib/src/indicators/value_indicators/text_value_indicator.dart @@ -37,7 +37,7 @@ class TextValueIndicator extends StatefulWidget { } /// class _TextValueIndicatorState extends State { - static const _debug = true; + static const _log = Log('_TextValueIndicatorState'); final Stream>? _stream; final int _fractionDigits; final String _valueUnit; @@ -91,7 +91,7 @@ class _TextValueIndicatorState extends State { num value = _value; if (snapshot.hasError) { color = _stateColors.invalid; - log(_debug, '[$_TextValueIndicatorState._buildValueText] snapshot.error: ', snapshot.error); + _log.debug('[._buildValueText] snapshot.error: ${snapshot.error}'); } else if (snapshot.hasData) { final point = snapshot.data; if (point != null) { @@ -99,10 +99,10 @@ class _TextValueIndicatorState extends State { _value = value; color = _buildColor(color, value); } else { - log(_debug, '[$_TextValueIndicatorState._build] snapshot.connectionState: ', snapshot.connectionState); + _log.debug('[._build] snapshot.connectionState: ${snapshot.connectionState}'); } } else { - log(_debug, '[$_TextValueIndicatorState._build] snapshot.connectionState: ', snapshot.connectionState); + _log.debug('[._build] snapshot.connectionState: ${snapshot.connectionState}'); } return Row( mainAxisSize: MainAxisSize.min, From 102e0320e2da195821b12451fe52efe13eec0fb5 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Thu, 11 Apr 2024 14:21:00 +0300 Subject: [PATCH 15/18] edit fields | changed response timeout type for DsSend --- .../edit_field/netword_edit_field/network_edit_field.dart | 8 ++++---- .../network_dropdown_field/network_dropdown_field.dart | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/src/edit_field/netword_edit_field/network_edit_field.dart b/lib/src/edit_field/netword_edit_field/network_edit_field.dart index a16628b..42aadab 100644 --- a/lib/src/edit_field/netword_edit_field/network_edit_field.dart +++ b/lib/src/edit_field/netword_edit_field/network_edit_field.dart @@ -21,7 +21,7 @@ class NetworkEditField extends StatefulWidget { final String? _unitText; final double _width; final bool _showApplyButton; - final int _responseTimeout; + final Duration _responseTimeout; final void Function(BuildContext)? _onUnauthorizedEdit; /// /// - [writeTagName] - the name of DataServer tag to send value @@ -43,7 +43,7 @@ class NetworkEditField extends StatefulWidget { String? unitText, double width = 230.0, showApplyButton = false, - int responseTimeout = 5, + Duration responseTimeout = const Duration(seconds: 5), void Function(BuildContext)? onUnauthorizedEdit, }) : _allowedGroups = allowedGroups, @@ -99,7 +99,7 @@ class _NetworkEditFieldState extends State> { final String? _unitText; final double _width; final bool _showApplyButton; - final int _responseTimeout; + final Duration _responseTimeout; final void Function(BuildContext) _onUnauthorizedEdit; String _initValue = ''; /// @@ -115,7 +115,7 @@ class _NetworkEditFieldState extends State> { required String? unitText, required double width, required bool showApplyButton, - required int responseTimeout, + required Duration responseTimeout, void Function(BuildContext)? onUnauthorizedEdit, }) : assert(T == int || T == double, 'Generic must be int or double.'), diff --git a/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart b/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart index 2130e88..73c11b3 100644 --- a/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart +++ b/lib/src/edit_field/network_dropdown_field/network_dropdown_field.dart @@ -18,7 +18,7 @@ class NetworkDropdownFormField extends StatefulWidget { final String? _labelText; final double _width; final OilData _oilData; - final int _responseTimeout; + final Duration _responseTimeout; final void Function(BuildContext)? _onUnauthorizedEdit; /// /// - [writeTagName] - the name of DataServer tag to send value @@ -38,7 +38,7 @@ class NetworkDropdownFormField extends StatefulWidget { double width = 350.0, void Function(BuildContext)? onUnauthorizedEdit, required OilData oilData, - int responseTimeout = 5, + Duration responseTimeout = const Duration(seconds: 5), }) : _allowedGroups = allowedGroups, _users = users, @@ -80,7 +80,7 @@ class _NetworkDropdownFormFieldState extends State { final String? _labelText; final double _width; void Function(BuildContext) _onUnauthorizedEdit; - final int _responseTimeout; + final Duration _responseTimeout; bool _accessAllowed = false; int? _dropdownValue; int? _initValue; @@ -95,7 +95,7 @@ class _NetworkDropdownFormFieldState extends State { required String? labelText, required double width, required OilData oilData, - required int responseTimeout, + required Duration responseTimeout, void Function(BuildContext)? onUnauthorizedEdit, }) : _allowedGroups = allowedGroups, From fc096acaefb219dff4630f1799821012f29d4af3 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Fri, 19 Apr 2024 15:31:13 +0300 Subject: [PATCH 16/18] Flushbar | replaced with own class BottomMessage --- example/pubspec.yaml | 1 - lib/hmi_widgets.dart | 1 + lib/src/dialogs/auth_dialog.dart | 18 +-- .../show_unauthorized_editing_flushbar.dart | 6 +- .../popups/bottom_message/bottom_message.dart | 108 ++++++++++++++++++ pubspec.yaml | 1 - 6 files changed, 121 insertions(+), 14 deletions(-) create mode 100644 lib/src/popups/bottom_message/bottom_message.dart diff --git a/example/pubspec.yaml b/example/pubspec.yaml index bc3cc1a..438cfdc 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -20,7 +20,6 @@ dependencies: git: url: https://github.com/a-givertzman/hmi_networking.git ref: 1.1.0 - another_flushbar: ^1.12.29 dev_dependencies: flutter_test: diff --git a/lib/hmi_widgets.dart b/lib/hmi_widgets.dart index 0603291..9eb4c53 100644 --- a/lib/hmi_widgets.dart +++ b/lib/hmi_widgets.dart @@ -28,6 +28,7 @@ export 'src/buttons/drop_down_control_button/drop_down_control_button.dart'; // // Popups export 'src/popups/popup_menu_button/popup_menu_button_custom.dart'; +export 'src/popups/bottom_message/bottom_message.dart'; // // Indicators // Status indicators diff --git a/lib/src/dialogs/auth_dialog.dart b/lib/src/dialogs/auth_dialog.dart index 1422797..17e84a6 100644 --- a/lib/src/dialogs/auth_dialog.dart +++ b/lib/src/dialogs/auth_dialog.dart @@ -1,8 +1,8 @@ -import 'package:another_flushbar/flushbar_helper.dart'; import 'package:flutter/material.dart'; import 'package:hmi_core/hmi_core.dart'; import 'package:hmi_core/hmi_core_app_settings.dart'; import 'package:hmi_networking/hmi_networking.dart'; +import 'package:hmi_widgets/src/popups/bottom_message/bottom_message.dart'; /// class AuthDialog extends StatefulWidget { final AppUserSingle? _currentUser; @@ -185,8 +185,8 @@ class _AuthDialogState extends State { } else { final currentUser = _currentUser?.info; if ((currentUser != null) && (_userLogin.value() == currentUser.login)) { - FlushbarHelper.createError( - duration: flushBarDuration, + BottomMessage.error( + displayDuration: flushBarDuration, title: const Localized('Authentication').v, message: const Localized('User already authenticated').v, ).show(context); @@ -197,8 +197,8 @@ class _AuthDialogState extends State { .then((authResult) { if (authResult.authenticated) { final flushBarDurationOnSucces = flushBarDuration * 0.2; - FlushbarHelper.createSuccess( - duration: flushBarDurationOnSucces, + BottomMessage.confirmation( + displayDuration: flushBarDurationOnSucces, title: const Localized('Authentication').v, message: authResult.message, ).show(context); @@ -207,8 +207,8 @@ class _AuthDialogState extends State { Navigator.of(context).pop(authResult); }); } else { - FlushbarHelper.createError( - duration: flushBarDuration, + BottomMessage.error( + displayDuration: flushBarDuration, title: const Localized('Authentication').v, message: authResult.message, ).show(context); @@ -217,8 +217,8 @@ class _AuthDialogState extends State { } else { final message = _buildWrongLoginPassMessage(); _log.debug('[._onComplete] message: $message'); - FlushbarHelper.createError( - duration: flushBarDuration, + BottomMessage.error( + displayDuration: flushBarDuration, title: const Localized('Authentication').v, message: message, ).show(context); diff --git a/lib/src/edit_field/show_unauthorized_editing_flushbar.dart b/lib/src/edit_field/show_unauthorized_editing_flushbar.dart index 5303c57..8c56326 100644 --- a/lib/src/edit_field/show_unauthorized_editing_flushbar.dart +++ b/lib/src/edit_field/show_unauthorized_editing_flushbar.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; -import 'package:another_flushbar/flushbar_helper.dart'; import 'package:hmi_core/hmi_core_app_settings.dart'; import 'package:hmi_core/hmi_core_translate.dart'; +import 'package:hmi_widgets/src/popups/bottom_message/bottom_message.dart'; /// void showUnauthorizedEditingFlushbar(BuildContext context) { - FlushbarHelper.createError( - duration: Duration( + BottomMessage.error( + displayDuration: Duration( milliseconds: const Setting('flushBarDurationMedium').toInt, ), message: const Localized('Editing is not permitted for current user').v, diff --git a/lib/src/popups/bottom_message/bottom_message.dart b/lib/src/popups/bottom_message/bottom_message.dart new file mode 100644 index 0000000..be5ed1a --- /dev/null +++ b/lib/src/popups/bottom_message/bottom_message.dart @@ -0,0 +1,108 @@ +import 'package:flutter/material.dart'; +/// +enum _MessageType { + confirmation, + info, + warning, + error, +} +/// +class BottomMessage { + final _MessageType _type; + final Duration _displayDuration; + final String? _title; + final String _message; + /// + const BottomMessage._({ + required _MessageType type, + required Duration displayDuration, + String? title, + required String message, + }) : + _type = type, + _displayDuration = displayDuration, + _title = title, + _message = message; + /// + const BottomMessage.confirmation({ + Duration displayDuration = const Duration(milliseconds: 500), + String? title, + required String message, + }) : this._( + type: _MessageType.confirmation, + displayDuration: displayDuration, + title: title, + message: message, + ); + /// + const BottomMessage.info({ + Duration displayDuration = const Duration(milliseconds: 500), + String? title, + required String message, + }) : this._( + type: _MessageType.info, + displayDuration: displayDuration, + title: title, + message: message, + ); + /// + const BottomMessage.warning({ + Duration displayDuration = const Duration(milliseconds: 500), + String? title, + required String message, + }) : this._( + type: _MessageType.warning, + displayDuration: displayDuration, + title: title, + message: message, + ); + /// + const BottomMessage.error({ + Duration displayDuration = const Duration(milliseconds: 500), + String? title, + required String message, + }) : this._( + type: _MessageType.error, + displayDuration: displayDuration, + title: title, + message: message, + ); + /// + void show(BuildContext context) { + final title = _title; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + duration: _displayDuration, + content: Row( + children: [ + switch(_type) { + _MessageType.confirmation => const Icon( + Icons.check_circle_outline_rounded, + color: Colors.greenAccent, + ), + _MessageType.info => const Icon( + Icons.info_outline_rounded, + color: Colors.blueAccent, + ), + _MessageType.warning => const Icon( + Icons.warning_amber_rounded, + color: Colors.yellowAccent, + ), + _MessageType.error => const Icon( + Icons.error_outline_rounded, + color: Colors.redAccent, + ), + }, + Column( + children: [ + if(title != null) + Text(title), + Text(_message) + ], + ), + ], + ), + ), + ); + } +} \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index 81ad851..0869268 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -23,7 +23,6 @@ dependencies: git: url: https://github.com/a-givertzman/hmi_networking.git ref: 1.1.0 - another_flushbar: ^1.12.29 dev_dependencies: flutter_test: From c54197bf12567f2ab5c12f22c909e5b3b3c663e2 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Fri, 19 Apr 2024 16:26:03 +0300 Subject: [PATCH 17/18] BottomMessage | Edit styles --- lib/src/popups/bottom_message/bottom_message.dart | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/src/popups/bottom_message/bottom_message.dart b/lib/src/popups/bottom_message/bottom_message.dart index be5ed1a..3147467 100644 --- a/lib/src/popups/bottom_message/bottom_message.dart +++ b/lib/src/popups/bottom_message/bottom_message.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:hmi_core/hmi_core_app_settings.dart'; /// enum _MessageType { confirmation, @@ -70,9 +71,13 @@ class BottomMessage { /// void show(BuildContext context) { final title = _title; + final theme = Theme.of(context); ScaffoldMessenger.of(context).showSnackBar( SnackBar( + showCloseIcon: true, duration: _displayDuration, + backgroundColor: theme.colorScheme.surface, + closeIconColor: theme.colorScheme.primary, content: Row( children: [ switch(_type) { @@ -93,11 +98,13 @@ class BottomMessage { color: Colors.redAccent, ), }, + SizedBox(width: const Setting('blockPadding').toDouble), Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ if(title != null) - Text(title), - Text(_message) + Text(title, style: theme.textTheme.titleMedium), + Text(_message, style: theme.textTheme.bodyMedium), ], ), ], From 14fad8a42857aee48f1753a091729c042f11b194 Mon Sep 17 00:00:00 2001 From: Minyewoo Date: Fri, 19 Apr 2024 20:15:53 +0300 Subject: [PATCH 18/18] BottomMessage | Made error attract more attention --- .../popups/bottom_message/bottom_message.dart | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/src/popups/bottom_message/bottom_message.dart b/lib/src/popups/bottom_message/bottom_message.dart index 3147467..ba0cbe6 100644 --- a/lib/src/popups/bottom_message/bottom_message.dart +++ b/lib/src/popups/bottom_message/bottom_message.dart @@ -12,13 +12,13 @@ class BottomMessage { final _MessageType _type; final Duration _displayDuration; final String? _title; - final String _message; + final String? _message; /// const BottomMessage._({ required _MessageType type, required Duration displayDuration, String? title, - required String message, + String? message, }) : _type = type, _displayDuration = displayDuration, @@ -28,7 +28,7 @@ class BottomMessage { const BottomMessage.confirmation({ Duration displayDuration = const Duration(milliseconds: 500), String? title, - required String message, + String? message, }) : this._( type: _MessageType.confirmation, displayDuration: displayDuration, @@ -39,7 +39,7 @@ class BottomMessage { const BottomMessage.info({ Duration displayDuration = const Duration(milliseconds: 500), String? title, - required String message, + String? message, }) : this._( type: _MessageType.info, displayDuration: displayDuration, @@ -50,7 +50,7 @@ class BottomMessage { const BottomMessage.warning({ Duration displayDuration = const Duration(milliseconds: 500), String? title, - required String message, + String? message, }) : this._( type: _MessageType.warning, displayDuration: displayDuration, @@ -61,7 +61,7 @@ class BottomMessage { const BottomMessage.error({ Duration displayDuration = const Duration(milliseconds: 500), String? title, - required String message, + String? message, }) : this._( type: _MessageType.error, displayDuration: displayDuration, @@ -70,7 +70,9 @@ class BottomMessage { ); /// void show(BuildContext context) { + const iconSize = 30.0; final title = _title; + final message = _message; final theme = Theme.of(context); ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -82,18 +84,22 @@ class BottomMessage { children: [ switch(_type) { _MessageType.confirmation => const Icon( + size: iconSize, Icons.check_circle_outline_rounded, color: Colors.greenAccent, ), _MessageType.info => const Icon( + size: iconSize, Icons.info_outline_rounded, color: Colors.blueAccent, ), _MessageType.warning => const Icon( + size: iconSize, Icons.warning_amber_rounded, color: Colors.yellowAccent, ), _MessageType.error => const Icon( + size: iconSize, Icons.error_outline_rounded, color: Colors.redAccent, ), @@ -103,8 +109,9 @@ class BottomMessage { crossAxisAlignment: CrossAxisAlignment.start, children: [ if(title != null) - Text(title, style: theme.textTheme.titleMedium), - Text(_message, style: theme.textTheme.bodyMedium), + Text(title, style: theme.textTheme.titleLarge), + if(message != null) + Text(message, style: theme.textTheme.bodySmall), ], ), ],