diff --git a/packages/webview_flutter/example/tizen/shared/res/input.html b/packages/webview_flutter/example/tizen/shared/res/input.html
new file mode 100644
index 000000000..f9c9613ff
--- /dev/null
+++ b/packages/webview_flutter/example/tizen/shared/res/input.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/webview_flutter/lib/webview_flutter_tizen.dart b/packages/webview_flutter/lib/webview_flutter_tizen.dart
index 26a276708..dafa1dfb0 100644
--- a/packages/webview_flutter/lib/webview_flutter_tizen.dart
+++ b/packages/webview_flutter/lib/webview_flutter_tizen.dart
@@ -78,12 +78,10 @@ class TizenViewController extends PlatformViewController {
int _textureId;
- @override
int get textureId => _textureId;
Size _size;
- @override
Future setSize(Size size) async {
assert(_state != _TizenViewState.disposed,
'trying to size a disposed Tizen View. View id: $viewId');
@@ -103,7 +101,6 @@ class TizenViewController extends PlatformViewController {
});
}
- @override
Future _sendCreateMessage() async {
assert(!_size.isEmpty,
'trying to create $TizenViewController without setting a valid size.');
@@ -128,7 +125,6 @@ class TizenViewController extends PlatformViewController {
await SystemChannels.platform_views.invokeMethod('create', args);
}
- @override
Future _sendDisposeMessage() {
return SystemChannels.platform_views
.invokeMethod('dispose', {
@@ -205,8 +201,8 @@ class TizenViewController extends PlatformViewController {
}
await SystemChannels.platform_views
.invokeMethod('touch', {
- "id": viewId,
- "event": [
+ 'id': viewId,
+ 'event': [
eventType, // int, pointer event type
event.buttons, // int, mouse button type (left, right, middle)
event.localPosition.dx, // double, global position x
@@ -222,6 +218,7 @@ class TizenViewController extends PlatformViewController {
if (_state != _TizenViewState.created) {
return Future.value();
}
+ // print('clearFocus : $viewId');
return SystemChannels.platform_views
.invokeMethod('clearFocus', viewId);
}
@@ -628,6 +625,7 @@ class _TizenWebViewState extends State {
@override
void didUpdateWidget(TizenWebView_ oldWidget) {
+ // print('webview: didUpdateWidget()');
super.didUpdateWidget(oldWidget);
final TextDirection newLayoutDirection = _findLayoutDirection();
@@ -688,6 +686,7 @@ class _TizenWebViewState extends State {
});
return;
}
+ // print('_onFocusChange - viewId : $_id');
SystemChannels.textInput
.invokeMethod(
'TextInput.setPlatformViewClient',
diff --git a/packages/webview_flutter/tizen/lib/liblightweight-web-engine.so b/packages/webview_flutter/tizen/lib/liblightweight-web-engine.so
new file mode 100644
index 000000000..6ea9ad44b
Binary files /dev/null and b/packages/webview_flutter/tizen/lib/liblightweight-web-engine.so differ
diff --git a/packages/webview_flutter/tizen/src/webview.cc b/packages/webview_flutter/tizen/src/webview.cc
index 645d6d4e9..e41ba7d60 100644
--- a/packages/webview_flutter/tizen/src/webview.cc
+++ b/packages/webview_flutter/tizen/src/webview.cc
@@ -435,6 +435,31 @@ void WebView::DispatchKeyUpEvent(Ecore_Event_Key* keyEvent) {
p);
}
+void WebView::SetSoftwareKeyboardContext(Ecore_IMF_Context* context) {
+ webViewInstance_->RegisterOnShowSoftwareKeyboardIfPossibleHandler(
+ [context](LWE::WebContainer* v) {
+ LOG_DEBUG("WebView - Show Keyboard()\n");
+ if (!context) {
+ LOG_ERROR("Ecore_IMF_Context NULL\n");
+ return;
+ }
+ ecore_imf_context_input_panel_show(context);
+ ecore_imf_context_focus_in(context);
+ });
+
+ webViewInstance_->RegisterOnHideSoftwareKeyboardIfPossibleHandler(
+ [context](LWE::WebContainer*) {
+ LOG_INFO("WebView - Hide Keyboard()\n");
+ if (!context) {
+ LOG_INFO("Ecore_IMF_Context NULL\n");
+ return;
+ }
+ ecore_imf_context_reset(context);
+ ecore_imf_context_focus_out(context);
+ ecore_imf_context_input_panel_hide(context);
+ });
+}
+
void WebView::ClearFocus() { LOG_DEBUG("WebView::clearFocus \n"); }
void WebView::SetDirection(int direction) {
diff --git a/packages/webview_flutter/tizen/src/webview.h b/packages/webview_flutter/tizen/src/webview.h
index 8e592ab5e..12fe001bf 100644
--- a/packages/webview_flutter/tizen/src/webview.h
+++ b/packages/webview_flutter/tizen/src/webview.h
@@ -11,6 +11,8 @@ namespace LWE {
class WebContainer;
}
+class TextInputChannel;
+
class WebView : public PlatformView {
public:
WebView(flutter::PluginRegistrar* registrar, int viewId,
@@ -28,6 +30,8 @@ class WebView : public PlatformView {
virtual void DispatchKeyDownEvent(Ecore_Event_Key* key) override;
virtual void DispatchKeyUpEvent(Ecore_Event_Key* key) override;
+ virtual void SetSoftwareKeyboardContext(Ecore_IMF_Context* context) override;
+
private:
void HandleMethodCall(
const flutter::MethodCall& method_call,