diff --git a/example/lib/main.dart b/example/lib/main.dart index ac4f9e4..70d2d72 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -264,6 +264,7 @@ class _MyHomePageState extends State { selectedStyle: ScrubberSelectionStyle.roundedBackground, overlayStyle: ScrubberSelectionStyle.outlineOverlay, mode: ScrubberMode.fixed, + shouldUnselectAfterHit: true, onSelect: (childId) { setState(() => isHighlightingTheColor = false); widget.changeThemeColor( diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 6424e0a..fd9ab5d 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -4,15 +4,17 @@ publish_to: 'none' version: 1.0.0+1 environment: - sdk: ">=2.12.0-0 <3.0.0" + sdk: '>=2.18.2 <3.0.0' dependencies: flutter: sdk: flutter - touch_bar: ^0.1.0-alpha.1 - cupertino_icons: ^1.0.2 + + cupertino_icons: ^1.0.5 dependency_overrides: + touch_bar: + path: ../touch_bar touch_bar_platform_interface: path: ../touch_bar_platform_interface touch_bar_macos: diff --git a/touch_bar/pubspec.yaml b/touch_bar/pubspec.yaml index 8ed1949..25aeb67 100644 --- a/touch_bar/pubspec.yaml +++ b/touch_bar/pubspec.yaml @@ -23,9 +23,9 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - plugin_platform_interface: ^1.1.0-nullsafety.2 - pedantic: ^1.11.0 + plugin_platform_interface: ^2.1.4 + pedantic: ^1.11.1 environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.18.2 <3.0.0' flutter: '>=1.20.0' diff --git a/touch_bar_macos/macos/Classes/Models/TouchBarScrubber.swift b/touch_bar_macos/macos/Classes/Models/TouchBarScrubber.swift index f87f7e4..8354974 100644 --- a/touch_bar_macos/macos/Classes/Models/TouchBarScrubber.swift +++ b/touch_bar_macos/macos/Classes/Models/TouchBarScrubber.swift @@ -13,6 +13,7 @@ class TouchBarScrubber: NSCustomTouchBarItem, TouchBarItem, NSTouchBarDelegate { var onSelect: String? var onHighlight: String? + var unselectAfterHit: Bool = false required init?(identifier: NSTouchBarItem.Identifier, withData itemData: NSDictionary) { super.init(identifier: identifier) @@ -39,6 +40,7 @@ class TouchBarScrubber: NSCustomTouchBarItem, TouchBarItem, NSTouchBarDelegate { let showArrowButtons = itemData["showArrowButtons"] as? Bool ?? false let isContinuous = itemData["isContinuous"] as? Bool ?? true + let shouldUnselectAfterHit = itemData["shouldUnselectAfterHit"] as? Bool ?? false self.scrubber.showsArrowButtons = showArrowButtons self.scrubber.isContinuous = isContinuous @@ -64,6 +66,7 @@ class TouchBarScrubber: NSCustomTouchBarItem, TouchBarItem, NSTouchBarDelegate { self.scrubber.showsArrowButtons = showArrowButtons self.scrubber.isContinuous = isContinuous + self.unselectAfterHit = shouldUnselectAfterHit } func update(data: NSDictionary) { @@ -80,6 +83,8 @@ class TouchBarScrubber: NSCustomTouchBarItem, TouchBarItem, NSTouchBarDelegate { self.scrubber.showsArrowButtons = showArrowButtons } else if let isContinuous = data["isContinuous"] as? Bool { self.scrubber.isContinuous = isContinuous + } else if let shouldUnselectAfterHit = data["shouldUnselectAfterHit"] as? Bool { + self.unselectAfterHit = shouldUnselectAfterHit } else if let children = data["children"] as? [NSDictionary] { self.children = children.map{ (child) -> TouchBarScrubberItem in switch child["type"] as? String { @@ -91,7 +96,7 @@ class TouchBarScrubber: NSCustomTouchBarItem, TouchBarItem, NSTouchBarDelegate { return TouchBarScrubberLabel(withData: child) } } - + self.scrubber.reloadData() self.scrubber.scrubberLayout.invalidateLayout() } @@ -128,6 +133,9 @@ extension TouchBarScrubber: NSScrubberDataSource, NSScrubberDelegate { func scrubber(_ scrubber: NSScrubber, didSelectItemAt selectedIndex: Int) { if let onSelect = self.onSelect { TouchBarPlugin.channel.invokeMethod(onSelect, arguments: selectedIndex) + if(self.unselectAfterHit) { + self.scrubber.selectedIndex = -1 + } } } diff --git a/touch_bar_macos/pubspec.yaml b/touch_bar_macos/pubspec.yaml index 1d4afeb..1a03644 100644 --- a/touch_bar_macos/pubspec.yaml +++ b/touch_bar_macos/pubspec.yaml @@ -12,7 +12,7 @@ flutter: fileName: touch_bar_macos.dart environment: - sdk: ">=2.12.0-0 <3.0.0" + sdk: '>=2.18.2 <3.0.0' flutter: ">=1.12.8" dependencies: diff --git a/touch_bar_platform_interface/lib/models/touch_bar_items/touch_bar_scrubber.dart b/touch_bar_platform_interface/lib/models/touch_bar_items/touch_bar_scrubber.dart index 95e4eef..b0dccbb 100644 --- a/touch_bar_platform_interface/lib/models/touch_bar_items/touch_bar_scrubber.dart +++ b/touch_bar_platform_interface/lib/models/touch_bar_items/touch_bar_scrubber.dart @@ -22,12 +22,14 @@ class TouchBarScrubber extends TouchBarContainer with CallableItem { ScrubberSelectionStyle overlayStyle = ScrubberSelectionStyle.none, ScrubberMode mode = ScrubberMode.free, bool isContinuous = true, + bool shouldUnselectAfterHit = false, }) : assert(children.length != 0), this._selectedStyle = selectedStyle, this._overlayStyle = overlayStyle, this._showArrowButtons = showArrowButtons, this._mode = mode, this._isContinuous = isContinuous, + this._shouldUnselectAfterHit = shouldUnselectAfterHit, super(children: children) { this.onSelect = onSelect!; this.onHighlight = onHighlight!; @@ -50,12 +52,14 @@ class TouchBarScrubber extends TouchBarContainer with CallableItem { ScrubberSelectionStyle _overlayStyle; ScrubberMode _mode; bool _isContinuous; + bool _shouldUnselectAfterHit; bool get showArrowButtons => _showArrowButtons; ScrubberSelectionStyle get selectedStyle => _selectedStyle; ScrubberSelectionStyle get overlayStyle => _overlayStyle; ScrubberMode get mode => _mode; bool get isContinuous => _isContinuous; + bool get shouldUnselectAfterHit => _shouldUnselectAfterHit; set onSelect(OnItemAction newValue) { // It is necessary to change only the [onSelect] implementation. @@ -96,6 +100,11 @@ class TouchBarScrubber extends TouchBarContainer with CallableItem { _isContinuous = newValue; } + set shouldUnselectAfterHit(bool newValue) { + this.updateProperty('shouldUnselectAfterHit', newValue: newValue); + _shouldUnselectAfterHit = newValue; + } + @override Map toMap() { Map map = { @@ -110,6 +119,7 @@ class TouchBarScrubber extends TouchBarContainer with CallableItem { map['overlayStyle'] = overlayStyle.toString(); map['mode'] = mode.toString(); map['isContinuous'] = isContinuous; + map['shouldUnselectAfterHit'] = shouldUnselectAfterHit; return map; } diff --git a/touch_bar_platform_interface/pubspec.lock b/touch_bar_platform_interface/pubspec.lock index ada3f5d..b9df3f6 100644 --- a/touch_bar_platform_interface/pubspec.lock +++ b/touch_bar_platform_interface/pubspec.lock @@ -5,51 +5,50 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.10.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted - version: "1.1.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" + version: "1.2.1" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -60,34 +59,54 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" + source: hosted + version: "0.6.5" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.12.13" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" + source: hosted + version: "0.2.0" meta: dependency: "direct main" description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.8.2" plugin_platform_interface: dependency: "direct main" description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + url: "https://pub.dev" source: hosted - version: "1.1.0-nullsafety.1" + version: "2.1.4" sky_engine: dependency: transitive description: flutter @@ -97,58 +116,58 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.19" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" + sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "0.4.16" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.4" sdks: - dart: ">=2.12.0-0.0 <3.0.0" + dart: ">=2.18.2 <3.0.0" flutter: ">=1.12.8" diff --git a/touch_bar_platform_interface/pubspec.yaml b/touch_bar_platform_interface/pubspec.yaml index c26728a..94578ae 100644 --- a/touch_bar_platform_interface/pubspec.yaml +++ b/touch_bar_platform_interface/pubspec.yaml @@ -10,12 +10,12 @@ dependencies: flutter: sdk: flutter meta: ^1.3.0 - plugin_platform_interface: ^1.1.0-nullsafety.1 + plugin_platform_interface: ^2.1.4 dev_dependencies: flutter_test: sdk: flutter environment: - sdk: ">=2.12.0-0 <3.0.0" + sdk: '>=2.18.2 <3.0.0' flutter: ">=1.12.8"