Skip to content

Commit ec8710a

Browse files
committed
Once more...
1 parent 75b2fe1 commit ec8710a

File tree

3 files changed

+62
-2
lines changed

3 files changed

+62
-2
lines changed

flutter_dropzone_web/lib/flutter_dropzone_plugin.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'package:flutter/material.dart';
99
import 'package:flutter/services.dart';
1010
import 'package:flutter_dropzone_platform_interface/flutter_dropzone_platform_interface.dart';
1111
import 'package:flutter_dropzone_web/flutter_dropzone_web.dart';
12+
import 'package:flutter_dropzone_web/html_element_view.dart';
1213
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
1314

1415
class FlutterDropzonePlugin extends FlutterDropzonePlatform {
@@ -96,7 +97,7 @@ class FlutterDropzonePlugin extends FlutterDropzonePlatform {
9697
future: _isReady,
9798
builder: (context, snapshot) {
9899
if (snapshot.hasData) {
99-
return HtmlElementView(
100+
return HtmlElementViewEx(
100101
viewType: 'com.creativephotocloud.plugins/dropzone',
101102
onPlatformViewCreated: onPlatformViewCreated,
102103
);
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import 'package:flutter/foundation.dart';
2+
import 'package:flutter/gestures.dart';
3+
import 'package:flutter/material.dart';
4+
import 'package:flutter/rendering.dart';
5+
import 'package:flutter/services.dart';
6+
7+
// https://github.com/flutter/flutter/issues/56181
8+
9+
class HtmlElementViewEx extends HtmlElementView {
10+
final PlatformViewCreatedCallback onPlatformViewCreated; //!!!
11+
final dynamic creationParams;
12+
13+
const HtmlElementViewEx({Key? key, required String viewType, required this.onPlatformViewCreated, this.creationParams}) : super(key: key, viewType: viewType);
14+
15+
@override
16+
Widget build(BuildContext context) => PlatformViewLink(
17+
viewType: viewType,
18+
onCreatePlatformView: _createHtmlElementView,
19+
surfaceFactory: (BuildContext context, PlatformViewController controller) => PlatformViewSurface(
20+
controller: controller,
21+
gestureRecognizers: const <Factory<OneSequenceGestureRecognizer>>{},
22+
hitTestBehavior: PlatformViewHitTestBehavior.opaque,
23+
),
24+
);
25+
26+
_HtmlElementViewControllerEx _createHtmlElementView(PlatformViewCreationParams params) {
27+
final _HtmlElementViewControllerEx controller = _HtmlElementViewControllerEx(params.id, viewType);
28+
controller._initialize().then((_) {
29+
params.onPlatformViewCreated(params.id);
30+
onPlatformViewCreated(params.id); //!!!
31+
});
32+
return controller;
33+
}
34+
}
35+
36+
class _HtmlElementViewControllerEx extends PlatformViewController {
37+
@override
38+
final int viewId;
39+
final String viewType;
40+
bool _initialized = false;
41+
42+
_HtmlElementViewControllerEx(this.viewId, this.viewType);
43+
44+
Future<void> _initialize() async {
45+
await SystemChannels.platform_views.invokeMethod<void>('create', {'id': viewId, 'viewType': viewType});
46+
_initialized = true;
47+
}
48+
49+
@override
50+
Future<void> clearFocus() async {}
51+
52+
@override
53+
Future<void> dispatchPointerEvent(PointerEvent event) async {}
54+
55+
@override
56+
Future<void> dispose() async {
57+
if (_initialized) await SystemChannels.platform_views.invokeMethod<void>('dispose', viewId);
58+
}
59+
}

flutter_dropzone_web/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: flutter_dropzone_web
22
description: A drag-and-drop Flutter plugin (Web only).
3-
version: 2.1.0
3+
version: 2.1.1
44
homepage: https://github.com/deakjahn/flutter_dropzone
55

66
environment:

0 commit comments

Comments
 (0)