Skip to content

Commit 3f36c35

Browse files
committed
Windows: Clear FilePicker state before opening the dialog as it's blocking
1 parent 3c50c4f commit 3f36c35

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

package/lib/src/controls/file_picker.dart

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import 'package:collection/collection.dart';
44
import 'package:file_picker/file_picker.dart';
55
import 'package:flet/src/protocol/file_picker_upload_file.dart';
66
import 'package:flet/src/protocol/file_picker_upload_progress_event.dart';
7+
import 'package:flet/src/utils/desktop.dart';
78
import 'package:flet/src/web_socket_client.dart';
8-
import '../protocol/file_picker_result_event.dart';
99
import 'package:flutter/foundation.dart';
1010
import 'package:flutter/material.dart';
1111
import 'package:flutter_redux/flutter_redux.dart';
@@ -15,6 +15,7 @@ import '../actions.dart';
1515
import '../flet_app_services.dart';
1616
import '../models/app_state.dart';
1717
import '../models/control.dart';
18+
import '../protocol/file_picker_result_event.dart';
1819
import '../protocol/update_control_props_payload.dart';
1920
import '../utils/strings.dart';
2021

@@ -63,7 +64,7 @@ class _FilePickerControlState extends State<FilePickerControl> {
6364

6465
debugPrint("FilePicker _state: $_state, state: $state");
6566

66-
sendEvent() {
67+
resetDialogState() {
6768
_state = null;
6869
var fletServices = FletAppServices.of(context);
6970
List<Map<String, String>> props = [
@@ -72,6 +73,14 @@ class _FilePickerControlState extends State<FilePickerControl> {
7273
fletServices.store.dispatch(UpdateControlPropsAction(
7374
UpdateControlPropsPayload(props: props)));
7475
fletServices.ws.updateControlProps(props: props);
76+
}
77+
78+
sendEvent() {
79+
if (defaultTargetPlatform != TargetPlatform.windows ||
80+
!isDesktop()) {
81+
resetDialogState();
82+
}
83+
var fletServices = FletAppServices.of(context);
7584
fletServices.ws.pageEventFromWeb(
7685
eventTarget: widget.control.id,
7786
eventName: "result",
@@ -88,6 +97,12 @@ class _FilePickerControlState extends State<FilePickerControl> {
8897
if (_state != state) {
8998
_path = null;
9099
_files = null;
100+
_state = state;
101+
102+
if (isDesktop() &&
103+
defaultTargetPlatform == TargetPlatform.windows) {
104+
resetDialogState();
105+
}
91106

92107
// pickFiles
93108
if (state?.toLowerCase() == "pickfiles") {
@@ -138,7 +153,6 @@ class _FilePickerControlState extends State<FilePickerControl> {
138153
sendEvent();
139154
});
140155
}
141-
_state = state;
142156
}
143157

144158
// upload files

0 commit comments

Comments
 (0)