fix to update state of defintion button in toolbar

pull/1011/head
Gabby Gurdin 2 years ago
parent 0bb202b9a3
commit da64ed1506

@ -1,12 +1,13 @@
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class MessageTextSelection {
String? selectedText;
String messageText = "";
final StreamController<String?> selectionStream =
StreamController<String?>.broadcast();
void setMessageText(String text) {
messageText = text;
@ -21,7 +22,7 @@ class MessageTextSelection {
if (BrowserContextMenu.enabled && kIsWeb) {
BrowserContextMenu.disableContextMenu();
}
// selectionStream.add(selectedText);
selectionStream.add(selectedText);
}
void clearTextSelection() {
@ -29,6 +30,6 @@ class MessageTextSelection {
if (kIsWeb && !BrowserContextMenu.enabled) {
BrowserContextMenu.enableContextMenu();
}
// selectionStream.add(selectedText);
selectionStream.add(selectedText);
}
}

@ -141,6 +141,7 @@ class MessageToolbar extends StatefulWidget {
class MessageToolbarState extends State<MessageToolbar> {
Widget? child;
MessageMode? _currentMode;
bool hasSelectedText = false;
late StreamSubscription<String?> _selectionStream;
late StreamSubscription<MessageMode> _toolbarModeStream;
@ -233,9 +234,23 @@ class MessageToolbarState extends State<MessageToolbar> {
@override
void initState() {
super.initState();
if (widget.textSelection.selectedText != null) {
hasSelectedText = true;
}
_toolbarModeStream = widget.toolbarModeStream.stream.listen((mode) {
updateMode(mode);
});
_selectionStream =
widget.textSelection.selectionStream.stream.listen((value) {
final bool shouldSetState =
value != null && !hasSelectedText || value == null && hasSelectedText;
hasSelectedText = value != null;
if (shouldSetState) {
setState(() {});
}
});
}
@override

Loading…
Cancel
Save