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.

Files changed (26) hide show
  1. flet_webview-0.1.0/PKG-INFO +42 -0
  2. flet_webview-0.1.0/README.md +28 -0
  3. flet_webview-0.1.0/pyproject.toml +36 -0
  4. flet_webview-0.1.0/setup.cfg +4 -0
  5. flet_webview-0.1.0/src/flet_webview/__init__.py +8 -0
  6. flet_webview-0.1.0/src/flet_webview/webview.py +498 -0
  7. flet_webview-0.1.0/src/flet_webview.egg-info/PKG-INFO +42 -0
  8. flet_webview-0.1.0/src/flet_webview.egg-info/SOURCES.txt +24 -0
  9. flet_webview-0.1.0/src/flet_webview.egg-info/dependency_links.txt +1 -0
  10. flet_webview-0.1.0/src/flet_webview.egg-info/requires.txt +1 -0
  11. flet_webview-0.1.0/src/flet_webview.egg-info/top_level.txt +2 -0
  12. flet_webview-0.1.0/src/flutter/flet_webview/CHANGELOG.md +3 -0
  13. flet_webview-0.1.0/src/flutter/flet_webview/LICENSE +201 -0
  14. flet_webview-0.1.0/src/flutter/flet_webview/README.md +3 -0
  15. flet_webview-0.1.0/src/flutter/flet_webview/analysis_options.yaml +4 -0
  16. flet_webview-0.1.0/src/flutter/flet_webview/lib/flet_webview.dart +3 -0
  17. flet_webview-0.1.0/src/flutter/flet_webview/lib/src/create_control.dart +20 -0
  18. flet_webview-0.1.0/src/flutter/flet_webview/lib/src/utils/webview.dart +12 -0
  19. flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview.dart +41 -0
  20. flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview_mobile_and_mac.dart +200 -0
  21. flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview_web.dart +38 -0
  22. flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview_web_vain.dart +18 -0
  23. flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview_windows_and_linux.dart +18 -0
  24. flet_webview-0.1.0/src/flutter/flet_webview/lib/src/webview_windows_and_linux_vain.dart +18 -0
  25. flet_webview-0.1.0/src/flutter/flet_webview/pubspec.lock +759 -0
  26. 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,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,8 @@
1
+ from flet_webview.webview import (
2
+ WebView,
3
+ WebviewConsoleMessageEvent,
4
+ WebviewJavaScriptEvent,
5
+ WebviewLogLevelSeverity,
6
+ WebviewRequestMethod,
7
+ WebviewScrollEvent,
8
+ )
@@ -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
+ flet>=0.25.2
@@ -0,0 +1,2 @@
1
+ flet_webview
2
+ flutter