Rebuild editor when keyboard is already open

If the keyboard is already open, but the editor thinks that the
keyboard is not open, the text will not be updated when writing.

This can easily happen if one has a `TabBarView` with two children,
each with an `QuillEditor`, see the code for an example:

<details><summary>Example</summary>

```dart
import 'package:flutter/material.dart';
import 'package:flutter_quill/widgets/controller.dart';
import 'package:flutter_quill/widgets/editor.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late QuillController _controller1;
  late QuillController _controller2;

  @override
  void initState() {
    _controller1 = QuillController.basic();
    _controller2 = QuillController.basic();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DefaultTabController(
        length: 2,
        child: Scaffold(
          appBar: AppBar(
            title: Text('Flutter Quill tabs demo'),
            bottom: TabBar(
              tabs: [
                Tab(text: 'First'),
                Tab(text: 'Second'),
              ],
            ),
          ),
          body: TabBarView(
            children: [
              QuillEditor.basic(controller: _controller1, readOnly: false),
              QuillEditor.basic(controller: _controller2, readOnly: false),
            ],
          ),
        ),
      ),
    );
  }
}

</details>

<details><summary>Video</summary>

</details>
pull/111/head
Till Friebe 4 years ago
parent ceb191b26b
commit 2045ae75e4
  1. 10
      lib/widgets/raw_editor.dart

@ -886,15 +886,11 @@ class RawEditorState extends EditorState
}
void _didChangeTextEditingValue() {
_onChangeTextEditingValue();
if (kIsWeb) {
_onChangeTextEditingValue();
requestKeyboard();
return;
}
if (_keyboardVisible) {
_onChangeTextEditingValue();
} else {
} else if (!_keyboardVisible) {
requestKeyboard();
}
}

Loading…
Cancel
Save