flet-webview 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flet-webview might be problematic. Click here for more details.
- flet_webview-0.1.0/PKG-INFO +42 -0
- flet_webview-0.1.0/README.md +28 -0
- flet_webview-0.1.0/pyproject.toml +36 -0
- flet_webview-0.1.0/setup.cfg +4 -0
- flet_webview-0.1.0/src/flet_webview/__init__.py +8 -0
- flet_webview-0.1.0/src/flet_webview/webview.py +498 -0
- flet_webview-0.1.0/src/flet_webview.egg-info/PKG-INFO +42 -0
- flet_webview-0.1.0/src/flet_webview.egg-info/SOURCES.txt +24 -0
- flet_webview-0.1.0/src/flet_webview.egg-info/dependency_links.txt +1 -0
- flet_webview-0.1.0/src/flet_webview.egg-info/requires.txt +1 -0
- flet_webview-0.1.0/src/flet_webview.egg-info/top_level.txt +2 -0
- flet_webview-0.1.0/src/flutter/flet_webview/CHANGELOG.md +3 -0
- flet_webview-0.1.0/src/flutter/flet_webview/LICENSE +201 -0
- flet_webview-0.1.0/src/flutter/flet_webview/README.md +3 -0
- flet_webview-0.1.0/src/flutter/flet_webview/analysis_options.yaml +4 -0
- flet_webview-0.1.0/src/flutter/flet_webview/lib/flet_webview.dart +3 -0
- flet_webview-0.1.0/src/flutter/flet_webview/lib/src/create_control.dart +20 -0
- flet_webview-0.1.0/src/flutter/flet_webview/lib/src/utils/webview.dart +12 -0
- flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview.dart +41 -0
- flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview_mobile_and_mac.dart +200 -0
- flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview_web.dart +38 -0
- flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview_web_vain.dart +18 -0
- flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview_windows_and_linux.dart +18 -0
- flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview_windows_and_linux_vain.dart +18 -0
- flet_webview-0.1.0/src/flutter/flet_webview/pubspec.lock +759 -0
- flet_webview-0.1.0/src/flutter/flet_webview/pubspec.yaml +22 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: flet-webview
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: WebView control for Flet
|
|
5
|
+
Author-email: Flet contributors <hello@flet.dev>
|
|
6
|
+
Project-URL: Homepage, https://flet.dev
|
|
7
|
+
Project-URL: Documentation, https://flet.dev/docs/controls/webview/
|
|
8
|
+
Project-URL: Repository, https://github.com/flet-dev/flet-webview
|
|
9
|
+
Project-URL: Issues, https://github.com/flet-dev/flet-webview/issues
|
|
10
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
|
+
Requires-Python: >=3.8
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: flet>=0.25.2
|
|
14
|
+
|
|
15
|
+
# WebView control for Flet
|
|
16
|
+
|
|
17
|
+
`WebView` control for Flet.
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
Add `flet-webview` as dependency (`pyproject.toml` or `requirements.txt`) to your Flet project.
|
|
22
|
+
|
|
23
|
+
## Example
|
|
24
|
+
|
|
25
|
+
```py
|
|
26
|
+
|
|
27
|
+
import flet as ft
|
|
28
|
+
|
|
29
|
+
import flet_webview as fwv
|
|
30
|
+
|
|
31
|
+
def main(page: ft.Page):
|
|
32
|
+
wv = fwv.WebView(
|
|
33
|
+
url="https://flet.dev",
|
|
34
|
+
on_page_started=lambda _: print("Page started"),
|
|
35
|
+
on_page_ended=lambda _: print("Page ended"),
|
|
36
|
+
on_web_resource_error=lambda e: print("Page error:", e.data),
|
|
37
|
+
expand=True,
|
|
38
|
+
)
|
|
39
|
+
page.add(wv)
|
|
40
|
+
|
|
41
|
+
ft.app(main)
|
|
42
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# WebView control for Flet
|
|
2
|
+
|
|
3
|
+
`WebView` control for Flet.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
Add `flet-webview` as dependency (`pyproject.toml` or `requirements.txt`) to your Flet project.
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
```py
|
|
12
|
+
|
|
13
|
+
import flet as ft
|
|
14
|
+
|
|
15
|
+
import flet_webview as fwv
|
|
16
|
+
|
|
17
|
+
def main(page: ft.Page):
|
|
18
|
+
wv = fwv.WebView(
|
|
19
|
+
url="https://flet.dev",
|
|
20
|
+
on_page_started=lambda _: print("Page started"),
|
|
21
|
+
on_page_ended=lambda _: print("Page ended"),
|
|
22
|
+
on_web_resource_error=lambda e: print("Page error:", e.data),
|
|
23
|
+
expand=True,
|
|
24
|
+
)
|
|
25
|
+
page.add(wv)
|
|
26
|
+
|
|
27
|
+
ft.app(main)
|
|
28
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "flet-webview"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "WebView control for Flet"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
authors = [
|
|
7
|
+
{ name = "Flet contributors", email = "hello@flet.dev" }
|
|
8
|
+
]
|
|
9
|
+
classifiers = [
|
|
10
|
+
"License :: OSI Approved :: Apache Software License",
|
|
11
|
+
]
|
|
12
|
+
requires-python = ">=3.8"
|
|
13
|
+
dependencies = [
|
|
14
|
+
"flet>=0.25.2",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
[project.urls]
|
|
18
|
+
Homepage = "https://flet.dev"
|
|
19
|
+
Documentation = "https://flet.dev/docs/controls/webview/"
|
|
20
|
+
Repository = "https://github.com/flet-dev/flet-webview"
|
|
21
|
+
Issues = "https://github.com/flet-dev/flet-webview/issues"
|
|
22
|
+
|
|
23
|
+
[tool.setuptools.package-data]
|
|
24
|
+
"flutter.flet_webview" = ["**/*"]
|
|
25
|
+
|
|
26
|
+
[tool.uv]
|
|
27
|
+
dev-dependencies = [
|
|
28
|
+
"flet[all]>=0.25.2",
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
[tool.setuptools]
|
|
32
|
+
license-files = []
|
|
33
|
+
|
|
34
|
+
[build-system]
|
|
35
|
+
requires = ["setuptools"]
|
|
36
|
+
build-backend = "setuptools.build_meta"
|
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import warnings
|
|
3
|
+
from enum import Enum
|
|
4
|
+
from typing import Any, Optional, Union
|
|
5
|
+
|
|
6
|
+
from flet.core.animation import AnimationValue
|
|
7
|
+
from flet.core.badge import BadgeValue
|
|
8
|
+
from flet.core.constrained_control import ConstrainedControl
|
|
9
|
+
from flet.core.control import OptionalNumber
|
|
10
|
+
from flet.core.control_event import ControlEvent
|
|
11
|
+
from flet.core.event_handler import EventHandler
|
|
12
|
+
from flet.core.exceptions import FletUnsupportedPlatformException
|
|
13
|
+
from flet.core.ref import Ref
|
|
14
|
+
from flet.core.tooltip import TooltipValue
|
|
15
|
+
from flet.core.types import (
|
|
16
|
+
ColorEnums,
|
|
17
|
+
ColorValue,
|
|
18
|
+
OffsetValue,
|
|
19
|
+
OptionalControlEventCallable,
|
|
20
|
+
OptionalEventCallable,
|
|
21
|
+
PagePlatform,
|
|
22
|
+
ResponsiveNumber,
|
|
23
|
+
RotateValue,
|
|
24
|
+
ScaleValue,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class WebviewRequestMethod(Enum):
|
|
29
|
+
GET = "get"
|
|
30
|
+
POST = "post"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class WebviewLogLevelSeverity(Enum):
|
|
34
|
+
ERROR = "error"
|
|
35
|
+
WARNING = "warning"
|
|
36
|
+
DEBUG = "debug"
|
|
37
|
+
INFO = "info"
|
|
38
|
+
LOG = "log"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class WebviewScrollEvent(ControlEvent):
|
|
42
|
+
def __init__(self, e: ControlEvent):
|
|
43
|
+
super().__init__(e.target, e.name, e.data, e.control, e.page)
|
|
44
|
+
d = json.loads(e.data)
|
|
45
|
+
self.x: float = d.get("x", 0)
|
|
46
|
+
self.y: float = d.get("y", 0)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class WebviewConsoleMessageEvent(ControlEvent):
|
|
50
|
+
def __init__(self, e: ControlEvent):
|
|
51
|
+
super().__init__(e.target, e.name, e.data, e.control, e.page)
|
|
52
|
+
d = json.loads(e.data)
|
|
53
|
+
self.message: str = d.get("message")
|
|
54
|
+
self.severity_level: WebviewLogLevelSeverity = WebviewLogLevelSeverity(
|
|
55
|
+
d.get("level")
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class WebviewJavaScriptEvent(ControlEvent):
|
|
60
|
+
def __init__(self, e: ControlEvent):
|
|
61
|
+
super().__init__(e.target, e.name, e.data, e.control, e.page)
|
|
62
|
+
d = json.loads(e.data)
|
|
63
|
+
self.message: str = d.get("message")
|
|
64
|
+
self.url: str = d.get("url")
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class WebView(ConstrainedControl):
|
|
68
|
+
"""
|
|
69
|
+
Easily load webpages while allowing user interaction.
|
|
70
|
+
|
|
71
|
+
The `WebView` control is designed exclusively for iOS and Android platforms.
|
|
72
|
+
|
|
73
|
+
## Examples
|
|
74
|
+
A simple webview implementation using this class could be like:
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
import flet as ft
|
|
78
|
+
|
|
79
|
+
import flet_web_view as fwv
|
|
80
|
+
|
|
81
|
+
def main(page: ft.Page):
|
|
82
|
+
wv = fwv.WebView(
|
|
83
|
+
"https://flet.dev",
|
|
84
|
+
expand=True,
|
|
85
|
+
on_page_started=lambda _: print("Page started"),
|
|
86
|
+
on_page_ended=lambda _: print("Page ended"),
|
|
87
|
+
on_web_resource_error=lambda e: print("Page error:", e.data),
|
|
88
|
+
)
|
|
89
|
+
page.add(wv)
|
|
90
|
+
|
|
91
|
+
ft.app(main)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Properties
|
|
95
|
+
|
|
96
|
+
### `url`
|
|
97
|
+
|
|
98
|
+
Start the webview by loading the `url` value.
|
|
99
|
+
|
|
100
|
+
### `javascript_enabled`
|
|
101
|
+
|
|
102
|
+
Enable or disable the javascript execution of the page. Note that disabling the javascript execution of the page may result unexpected webpage behaviour.
|
|
103
|
+
|
|
104
|
+
### `prevent_link`
|
|
105
|
+
|
|
106
|
+
Specify a link to prevent it from downloading.
|
|
107
|
+
|
|
108
|
+
### `bgcolor`
|
|
109
|
+
|
|
110
|
+
Set the background color of the webview.
|
|
111
|
+
|
|
112
|
+
## Events
|
|
113
|
+
|
|
114
|
+
### `on_page_started`
|
|
115
|
+
|
|
116
|
+
Fires soon as the first loading process of the webpage is started.
|
|
117
|
+
|
|
118
|
+
### `on_page_ended`
|
|
119
|
+
|
|
120
|
+
Fires when all the webpage loading processes are ended.
|
|
121
|
+
|
|
122
|
+
### `on_web_resource_error`
|
|
123
|
+
|
|
124
|
+
Fires when there is error with loading a webpage resource.
|
|
125
|
+
|
|
126
|
+
View docs: [WebView](https://flet.dev/docs/controls/webview)
|
|
127
|
+
"""
|
|
128
|
+
|
|
129
|
+
def __init__(
|
|
130
|
+
self,
|
|
131
|
+
url: str,
|
|
132
|
+
javascript_enabled: Optional[bool] = None,
|
|
133
|
+
enable_javascript: Optional[bool] = None,
|
|
134
|
+
prevent_link: Optional[str] = None,
|
|
135
|
+
bgcolor: Optional[ColorValue] = None,
|
|
136
|
+
on_page_started: OptionalControlEventCallable = None,
|
|
137
|
+
on_page_ended: OptionalControlEventCallable = None,
|
|
138
|
+
on_web_resource_error: OptionalControlEventCallable = None,
|
|
139
|
+
on_progress: OptionalControlEventCallable = None,
|
|
140
|
+
on_url_change: OptionalControlEventCallable = None,
|
|
141
|
+
on_scroll: OptionalEventCallable[WebviewScrollEvent] = None,
|
|
142
|
+
on_console_message: OptionalEventCallable[WebviewConsoleMessageEvent] = None,
|
|
143
|
+
on_javascript_alert_dialog: OptionalEventCallable[
|
|
144
|
+
WebviewJavaScriptEvent
|
|
145
|
+
] = None,
|
|
146
|
+
#
|
|
147
|
+
# ConstrainedControl
|
|
148
|
+
#
|
|
149
|
+
ref: Optional[Ref] = None,
|
|
150
|
+
key: Optional[str] = None,
|
|
151
|
+
width: OptionalNumber = None,
|
|
152
|
+
height: OptionalNumber = None,
|
|
153
|
+
left: OptionalNumber = None,
|
|
154
|
+
top: OptionalNumber = None,
|
|
155
|
+
right: OptionalNumber = None,
|
|
156
|
+
bottom: OptionalNumber = None,
|
|
157
|
+
expand: Union[None, bool, int] = None,
|
|
158
|
+
expand_loose: Optional[bool] = None,
|
|
159
|
+
col: Optional[ResponsiveNumber] = None,
|
|
160
|
+
opacity: OptionalNumber = None,
|
|
161
|
+
rotate: RotateValue = None,
|
|
162
|
+
scale: ScaleValue = None,
|
|
163
|
+
offset: OffsetValue = None,
|
|
164
|
+
aspect_ratio: OptionalNumber = None,
|
|
165
|
+
animate_opacity: Optional[AnimationValue] = None,
|
|
166
|
+
animate_size: Optional[AnimationValue] = None,
|
|
167
|
+
animate_position: Optional[AnimationValue] = None,
|
|
168
|
+
animate_rotation: Optional[AnimationValue] = None,
|
|
169
|
+
animate_scale: Optional[AnimationValue] = None,
|
|
170
|
+
animate_offset: Optional[AnimationValue] = None,
|
|
171
|
+
on_animation_end: OptionalControlEventCallable = None,
|
|
172
|
+
tooltip: TooltipValue = None,
|
|
173
|
+
badge: Optional[BadgeValue] = None,
|
|
174
|
+
visible: Optional[bool] = None,
|
|
175
|
+
disabled: Optional[bool] = None,
|
|
176
|
+
data: Any = None,
|
|
177
|
+
):
|
|
178
|
+
ConstrainedControl.__init__(
|
|
179
|
+
self,
|
|
180
|
+
ref=ref,
|
|
181
|
+
key=key,
|
|
182
|
+
width=width,
|
|
183
|
+
height=height,
|
|
184
|
+
left=left,
|
|
185
|
+
top=top,
|
|
186
|
+
right=right,
|
|
187
|
+
bottom=bottom,
|
|
188
|
+
expand=expand,
|
|
189
|
+
expand_loose=expand_loose,
|
|
190
|
+
col=col,
|
|
191
|
+
opacity=opacity,
|
|
192
|
+
rotate=rotate,
|
|
193
|
+
scale=scale,
|
|
194
|
+
offset=offset,
|
|
195
|
+
aspect_ratio=aspect_ratio,
|
|
196
|
+
animate_opacity=animate_opacity,
|
|
197
|
+
animate_size=animate_size,
|
|
198
|
+
animate_position=animate_position,
|
|
199
|
+
animate_rotation=animate_rotation,
|
|
200
|
+
animate_scale=animate_scale,
|
|
201
|
+
animate_offset=animate_offset,
|
|
202
|
+
on_animation_end=on_animation_end,
|
|
203
|
+
tooltip=tooltip,
|
|
204
|
+
badge=badge,
|
|
205
|
+
visible=visible,
|
|
206
|
+
disabled=disabled,
|
|
207
|
+
data=data,
|
|
208
|
+
)
|
|
209
|
+
self.__on_scroll = EventHandler(lambda e: WebviewScrollEvent(e))
|
|
210
|
+
self._add_event_handler("scroll", self.__on_scroll.get_handler())
|
|
211
|
+
self.__on_console_message = EventHandler(
|
|
212
|
+
lambda e: WebviewConsoleMessageEvent(e)
|
|
213
|
+
)
|
|
214
|
+
self._add_event_handler(
|
|
215
|
+
"console_message", self.__on_console_message.get_handler()
|
|
216
|
+
)
|
|
217
|
+
self.__on_javascript_alert_dialog = EventHandler(
|
|
218
|
+
lambda e: WebviewJavaScriptEvent(e)
|
|
219
|
+
)
|
|
220
|
+
self._add_event_handler(
|
|
221
|
+
"javascript_alert_dialog", self.__on_javascript_alert_dialog.get_handler()
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
self.url = url
|
|
225
|
+
self.javascript_enabled = javascript_enabled
|
|
226
|
+
self.enable_javascript = enable_javascript
|
|
227
|
+
self.prevent_link = prevent_link
|
|
228
|
+
self.bgcolor = bgcolor
|
|
229
|
+
self.on_page_started = on_page_started
|
|
230
|
+
self.on_page_ended = on_page_ended
|
|
231
|
+
self.on_web_resource_error = on_web_resource_error
|
|
232
|
+
self.on_progress = on_progress
|
|
233
|
+
self.on_url_change = on_url_change
|
|
234
|
+
self.on_scroll = on_scroll
|
|
235
|
+
self.on_console_message = on_console_message
|
|
236
|
+
self.on_javascript_alert_dialog = on_javascript_alert_dialog
|
|
237
|
+
|
|
238
|
+
def _get_control_name(self):
|
|
239
|
+
return "webview"
|
|
240
|
+
|
|
241
|
+
def _check_mobile_or_mac_platform(self):
|
|
242
|
+
assert self.page is not None, "WebView must be added to page first."
|
|
243
|
+
if self.page.platform not in [
|
|
244
|
+
PagePlatform.ANDROID,
|
|
245
|
+
PagePlatform.IOS,
|
|
246
|
+
PagePlatform.MACOS,
|
|
247
|
+
]:
|
|
248
|
+
raise FletUnsupportedPlatformException(
|
|
249
|
+
"This method is supported on Android, iOS and macOS platforms only."
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
def reload(self):
|
|
253
|
+
self._check_mobile_or_mac_platform()
|
|
254
|
+
self.invoke_method("reload")
|
|
255
|
+
|
|
256
|
+
def can_go_back(self, wait_timeout: OptionalNumber = 10) -> bool:
|
|
257
|
+
self._check_mobile_or_mac_platform()
|
|
258
|
+
return (
|
|
259
|
+
self.invoke_method(
|
|
260
|
+
"can_go_back",
|
|
261
|
+
wait_for_result=True,
|
|
262
|
+
wait_timeout=wait_timeout,
|
|
263
|
+
)
|
|
264
|
+
== "true"
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
def can_go_forward(self, wait_timeout: OptionalNumber = 10) -> bool:
|
|
268
|
+
self._check_mobile_or_mac_platform()
|
|
269
|
+
return (
|
|
270
|
+
self.invoke_method(
|
|
271
|
+
"can_go_forward",
|
|
272
|
+
wait_for_result=True,
|
|
273
|
+
wait_timeout=wait_timeout,
|
|
274
|
+
)
|
|
275
|
+
== "true"
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
def go_back(self):
|
|
279
|
+
self._check_mobile_or_mac_platform()
|
|
280
|
+
self.invoke_method("go_back")
|
|
281
|
+
|
|
282
|
+
def go_forward(self):
|
|
283
|
+
self._check_mobile_or_mac_platform()
|
|
284
|
+
self.invoke_method("go_forward")
|
|
285
|
+
|
|
286
|
+
def enable_zoom(self):
|
|
287
|
+
self._check_mobile_or_mac_platform()
|
|
288
|
+
self.invoke_method("enable_zoom")
|
|
289
|
+
|
|
290
|
+
def disable_zoom(self):
|
|
291
|
+
self._check_mobile_or_mac_platform()
|
|
292
|
+
self.invoke_method("disable_zoom")
|
|
293
|
+
|
|
294
|
+
def clear_cache(self):
|
|
295
|
+
self._check_mobile_or_mac_platform()
|
|
296
|
+
self.invoke_method("clear_cache")
|
|
297
|
+
|
|
298
|
+
def clear_local_storage(self):
|
|
299
|
+
self._check_mobile_or_mac_platform()
|
|
300
|
+
self.invoke_method("clear_local_storage")
|
|
301
|
+
|
|
302
|
+
def get_current_url(self, wait_timeout: OptionalNumber = 10) -> Optional[str]:
|
|
303
|
+
self._check_mobile_or_mac_platform()
|
|
304
|
+
return self.invoke_method(
|
|
305
|
+
"get_current_url", wait_for_result=True, wait_timeout=wait_timeout
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
def get_title(self, wait_timeout: OptionalNumber = 10) -> Optional[str]:
|
|
309
|
+
self._check_mobile_or_mac_platform()
|
|
310
|
+
return self.invoke_method(
|
|
311
|
+
"get_title", wait_for_result=True, wait_timeout=wait_timeout
|
|
312
|
+
)
|
|
313
|
+
|
|
314
|
+
def get_user_agent(self, wait_timeout: OptionalNumber = 10) -> Optional[str]:
|
|
315
|
+
self._check_mobile_or_mac_platform()
|
|
316
|
+
return self.invoke_method(
|
|
317
|
+
"get_user_agent", wait_for_result=True, wait_timeout=wait_timeout
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
def load_file(self, absolute_path: str):
|
|
321
|
+
self._check_mobile_or_mac_platform()
|
|
322
|
+
self.invoke_method("load_file", arguments={"path": absolute_path})
|
|
323
|
+
|
|
324
|
+
def load_request(
|
|
325
|
+
self, url: str, method: WebviewRequestMethod = WebviewRequestMethod.GET
|
|
326
|
+
):
|
|
327
|
+
self._check_mobile_or_mac_platform()
|
|
328
|
+
self.invoke_method(
|
|
329
|
+
"load_request",
|
|
330
|
+
arguments={"url": url, "method": method.value},
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
def run_javascript(self, value: str):
|
|
334
|
+
self._check_mobile_or_mac_platform()
|
|
335
|
+
self.invoke_method("run_javascript", arguments={"value": value})
|
|
336
|
+
|
|
337
|
+
def load_html(self, value: str, base_url: Optional[str] = None):
|
|
338
|
+
self._check_mobile_or_mac_platform()
|
|
339
|
+
self.invoke_method(
|
|
340
|
+
"load_html", arguments={"value": value, "base_url": base_url}
|
|
341
|
+
)
|
|
342
|
+
|
|
343
|
+
def scroll_to(self, x: int, y: int):
|
|
344
|
+
self._check_mobile_or_mac_platform()
|
|
345
|
+
self.invoke_method("scroll_to", arguments={"x": str(x), "y": str(y)})
|
|
346
|
+
|
|
347
|
+
def scroll_by(self, x: int, y: int):
|
|
348
|
+
self._check_mobile_or_mac_platform()
|
|
349
|
+
self.invoke_method("scroll_by", arguments={"x": str(x), "y": str(y)})
|
|
350
|
+
|
|
351
|
+
# bgcolor
|
|
352
|
+
@property
|
|
353
|
+
def bgcolor(self) -> Optional[ColorValue]:
|
|
354
|
+
return self.__bgcolor
|
|
355
|
+
|
|
356
|
+
@bgcolor.setter
|
|
357
|
+
def bgcolor(self, value: Optional[ColorValue]):
|
|
358
|
+
self.__bgcolor = value
|
|
359
|
+
self._set_enum_attr("bgcolor", value, ColorEnums)
|
|
360
|
+
|
|
361
|
+
# url
|
|
362
|
+
@property
|
|
363
|
+
def url(self) -> str:
|
|
364
|
+
return self._get_attr("url")
|
|
365
|
+
|
|
366
|
+
@url.setter
|
|
367
|
+
def url(self, value: str):
|
|
368
|
+
self._set_attr("url", value)
|
|
369
|
+
if self.page:
|
|
370
|
+
self.load_request(value, WebviewRequestMethod.GET)
|
|
371
|
+
|
|
372
|
+
# javascript_enabled
|
|
373
|
+
@property
|
|
374
|
+
def javascript_enabled(self) -> bool:
|
|
375
|
+
warnings.warn(
|
|
376
|
+
f"javascript_enabled is deprecated since version 0.25.0 "
|
|
377
|
+
f"and will be removed in version 0.28.0. Use enable_javascript instead.",
|
|
378
|
+
category=DeprecationWarning,
|
|
379
|
+
stacklevel=2,
|
|
380
|
+
)
|
|
381
|
+
return self._get_attr("javascriptEnabled", data_type="bool", def_value=False)
|
|
382
|
+
|
|
383
|
+
@javascript_enabled.setter
|
|
384
|
+
def javascript_enabled(self, value: Optional[bool]):
|
|
385
|
+
self._set_attr("javascriptEnabled", value)
|
|
386
|
+
if value is not None:
|
|
387
|
+
warnings.warn(
|
|
388
|
+
f"javascript_enabled is deprecated since version 0.25.0 "
|
|
389
|
+
f"and will be removed in version 0.28.0. Use enable_javascript instead.",
|
|
390
|
+
category=DeprecationWarning,
|
|
391
|
+
stacklevel=2,
|
|
392
|
+
)
|
|
393
|
+
if self.page:
|
|
394
|
+
self.invoke_method(
|
|
395
|
+
"set_javascript_mode",
|
|
396
|
+
arguments={"value": str(value)},
|
|
397
|
+
)
|
|
398
|
+
|
|
399
|
+
# enable_javascript
|
|
400
|
+
@property
|
|
401
|
+
def enable_javascript(self) -> bool:
|
|
402
|
+
return self._get_attr("enableJavascript", data_type="bool", def_value=False)
|
|
403
|
+
|
|
404
|
+
@enable_javascript.setter
|
|
405
|
+
def enable_javascript(self, value: Optional[bool]):
|
|
406
|
+
self._set_attr("enableJavascript", value)
|
|
407
|
+
if self.page and value is not None:
|
|
408
|
+
self.invoke_method(
|
|
409
|
+
"set_javascript_mode",
|
|
410
|
+
arguments={"value": str(value)},
|
|
411
|
+
)
|
|
412
|
+
|
|
413
|
+
# prevent_link
|
|
414
|
+
@property
|
|
415
|
+
def prevent_link(self) -> str:
|
|
416
|
+
return self._get_attr("prevent_link")
|
|
417
|
+
|
|
418
|
+
@prevent_link.setter
|
|
419
|
+
def prevent_link(self, value: str):
|
|
420
|
+
self._set_attr("prevent_link", value)
|
|
421
|
+
|
|
422
|
+
# on_page_started
|
|
423
|
+
@property
|
|
424
|
+
def on_page_started(self) -> OptionalControlEventCallable:
|
|
425
|
+
return self._get_event_handler("page_started")
|
|
426
|
+
|
|
427
|
+
@on_page_started.setter
|
|
428
|
+
def on_page_started(self, handler: OptionalControlEventCallable):
|
|
429
|
+
self._add_event_handler("page_started", handler)
|
|
430
|
+
|
|
431
|
+
# on_page_ended
|
|
432
|
+
@property
|
|
433
|
+
def on_page_ended(self) -> OptionalControlEventCallable:
|
|
434
|
+
return self._get_event_handler("page_ended")
|
|
435
|
+
|
|
436
|
+
@on_page_ended.setter
|
|
437
|
+
def on_page_ended(self, handler: OptionalControlEventCallable):
|
|
438
|
+
self._add_event_handler("page_ended", handler)
|
|
439
|
+
|
|
440
|
+
# on_web_resource_error
|
|
441
|
+
@property
|
|
442
|
+
def on_web_resource_error(self) -> OptionalControlEventCallable:
|
|
443
|
+
return self._get_event_handler("web_resource_error")
|
|
444
|
+
|
|
445
|
+
@on_web_resource_error.setter
|
|
446
|
+
def on_web_resource_error(self, handler: OptionalControlEventCallable):
|
|
447
|
+
self._add_event_handler("web_resource_error", handler)
|
|
448
|
+
|
|
449
|
+
# on_progress
|
|
450
|
+
@property
|
|
451
|
+
def on_progress(self) -> OptionalControlEventCallable:
|
|
452
|
+
return self._get_event_handler("progress")
|
|
453
|
+
|
|
454
|
+
@on_progress.setter
|
|
455
|
+
def on_progress(self, handler: OptionalControlEventCallable):
|
|
456
|
+
self._add_event_handler("progress", handler)
|
|
457
|
+
|
|
458
|
+
# on_url_change
|
|
459
|
+
@property
|
|
460
|
+
def on_url_change(self) -> OptionalControlEventCallable:
|
|
461
|
+
return self._get_event_handler("url_change")
|
|
462
|
+
|
|
463
|
+
@on_url_change.setter
|
|
464
|
+
def on_url_change(self, handler: OptionalControlEventCallable):
|
|
465
|
+
self._add_event_handler("url_change", handler)
|
|
466
|
+
|
|
467
|
+
# on_scroll
|
|
468
|
+
@property
|
|
469
|
+
def on_scroll(self) -> OptionalEventCallable[WebviewScrollEvent]:
|
|
470
|
+
return self.__on_scroll.handler
|
|
471
|
+
|
|
472
|
+
@on_scroll.setter
|
|
473
|
+
def on_scroll(self, handler: OptionalEventCallable[WebviewScrollEvent]):
|
|
474
|
+
self.__on_scroll.handler = handler
|
|
475
|
+
|
|
476
|
+
# on_console_message
|
|
477
|
+
@property
|
|
478
|
+
def on_console_message(self) -> OptionalEventCallable[WebviewConsoleMessageEvent]:
|
|
479
|
+
return self.__on_console_message.handler
|
|
480
|
+
|
|
481
|
+
@on_console_message.setter
|
|
482
|
+
def on_console_message(
|
|
483
|
+
self, handler: OptionalEventCallable[WebviewConsoleMessageEvent]
|
|
484
|
+
):
|
|
485
|
+
self.__on_console_message.handler = handler
|
|
486
|
+
|
|
487
|
+
# on_javascript_alert_dialog
|
|
488
|
+
@property
|
|
489
|
+
def on_javascript_alert_dialog(
|
|
490
|
+
self,
|
|
491
|
+
) -> OptionalEventCallable[WebviewJavaScriptEvent]:
|
|
492
|
+
return self.__on_javascript_alert_dialog.handler
|
|
493
|
+
|
|
494
|
+
@on_javascript_alert_dialog.setter
|
|
495
|
+
def on_javascript_alert_dialog(
|
|
496
|
+
self, handler: OptionalEventCallable[WebviewJavaScriptEvent]
|
|
497
|
+
):
|
|
498
|
+
self.__on_javascript_alert_dialog.handler = handler
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: flet-webview
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: WebView control for Flet
|
|
5
|
+
Author-email: Flet contributors <hello@flet.dev>
|
|
6
|
+
Project-URL: Homepage, https://flet.dev
|
|
7
|
+
Project-URL: Documentation, https://flet.dev/docs/controls/webview/
|
|
8
|
+
Project-URL: Repository, https://github.com/flet-dev/flet-webview
|
|
9
|
+
Project-URL: Issues, https://github.com/flet-dev/flet-webview/issues
|
|
10
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
|
+
Requires-Python: >=3.8
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: flet>=0.25.2
|
|
14
|
+
|
|
15
|
+
# WebView control for Flet
|
|
16
|
+
|
|
17
|
+
`WebView` control for Flet.
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
Add `flet-webview` as dependency (`pyproject.toml` or `requirements.txt`) to your Flet project.
|
|
22
|
+
|
|
23
|
+
## Example
|
|
24
|
+
|
|
25
|
+
```py
|
|
26
|
+
|
|
27
|
+
import flet as ft
|
|
28
|
+
|
|
29
|
+
import flet_webview as fwv
|
|
30
|
+
|
|
31
|
+
def main(page: ft.Page):
|
|
32
|
+
wv = fwv.WebView(
|
|
33
|
+
url="https://flet.dev",
|
|
34
|
+
on_page_started=lambda _: print("Page started"),
|
|
35
|
+
on_page_ended=lambda _: print("Page ended"),
|
|
36
|
+
on_web_resource_error=lambda e: print("Page error:", e.data),
|
|
37
|
+
expand=True,
|
|
38
|
+
)
|
|
39
|
+
page.add(wv)
|
|
40
|
+
|
|
41
|
+
ft.app(main)
|
|
42
|
+
```
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
src/flet_webview/__init__.py
|
|
4
|
+
src/flet_webview/webview.py
|
|
5
|
+
src/flet_webview.egg-info/PKG-INFO
|
|
6
|
+
src/flet_webview.egg-info/SOURCES.txt
|
|
7
|
+
src/flet_webview.egg-info/dependency_links.txt
|
|
8
|
+
src/flet_webview.egg-info/requires.txt
|
|
9
|
+
src/flet_webview.egg-info/top_level.txt
|
|
10
|
+
src/flutter/flet_webview/CHANGELOG.md
|
|
11
|
+
src/flutter/flet_webview/LICENSE
|
|
12
|
+
src/flutter/flet_webview/README.md
|
|
13
|
+
src/flutter/flet_webview/analysis_options.yaml
|
|
14
|
+
src/flutter/flet_webview/pubspec.lock
|
|
15
|
+
src/flutter/flet_webview/pubspec.yaml
|
|
16
|
+
src/flutter/flet_webview/lib/flet_webview.dart
|
|
17
|
+
src/flutter/flet_webview/lib/src/create_control.dart
|
|
18
|
+
src/flutter/flet_webview/lib/src/webview.dart
|
|
19
|
+
src/flutter/flet_webview/lib/src/webview_mobile_and_mac.dart
|
|
20
|
+
src/flutter/flet_webview/lib/src/webview_web.dart
|
|
21
|
+
src/flutter/flet_webview/lib/src/webview_web_vain.dart
|
|
22
|
+
src/flutter/flet_webview/lib/src/webview_windows_and_linux.dart
|
|
23
|
+
src/flutter/flet_webview/lib/src/webview_windows_and_linux_vain.dart
|
|
24
|
+
src/flutter/flet_webview/lib/src/utils/webview.dart
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
flet>=0.25.2
|