Skip to content

Commit bf54d0b

Browse files
committed
[enhanced] v0.9.0
1 parent 8b57217 commit bf54d0b

File tree

11 files changed

+59
-371
lines changed

11 files changed

+59
-371
lines changed

demo_app/lib/screens/font_size.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class _Panel extends StatelessWidget {
5555
],
5656
),
5757
const Divider(),
58-
HtmlWidget(
58+
const HtmlWidget(
5959
'<p style="font-size: 1em">Almost every developer\'s favorite '
6060
'molecule is C<sub>8</sub>H<sub>10</sub>N<sub>4</sub>O<sub>2</sub>, '
6161
'also known as "caffeine."</p>',

demo_app/lib/screens/golden.dart

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,7 @@ class Golden extends StatelessWidget {
5454
),
5555
LimitedBox(
5656
maxHeight: 400,
57-
child: enhanced.HtmlWidget(
58-
html,
59-
baseUrl: baseUrl,
60-
// ignore: deprecated_member_use
61-
webView: true,
62-
),
57+
child: enhanced.HtmlWidget(html, baseUrl: baseUrl),
6358
),
6459
]);
6560
}

demo_app/lib/screens/hello_world.dart

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,7 @@ class HelloWorldScreen extends StatelessWidget {
159159
body: SingleChildScrollView(
160160
child: Padding(
161161
padding: const EdgeInsets.all(8.0),
162-
child: HtmlWidget(
163-
kHtml,
164-
key: context.key,
165-
// ignore: deprecated_member_use
166-
webView: true,
167-
),
162+
child: HtmlWidget(kHtml, key: context.key),
168163
),
169164
),
170165
);

demo_app/lib/screens/huge_html.dart

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5225,9 +5225,9 @@ class _ColumnScreen extends StatelessWidget {
52255225
@override
52265226
Widget build(BuildContext context) => Scaffold(
52275227
appBar: AppBar(title: const Text('renderMode: Column')),
5228-
body: SingleChildScrollView(
5228+
body: const SingleChildScrollView(
52295229
child: Padding(
5230-
padding: const EdgeInsets.all(8.0),
5230+
padding: EdgeInsets.all(8.0),
52315231
child: RepaintBoundary(
52325232
child: HtmlWidget(kHtml),
52335233
),
@@ -5240,26 +5240,26 @@ class _ListViewScreen extends StatelessWidget {
52405240
@override
52415241
Widget build(BuildContext context) => Scaffold(
52425242
appBar: AppBar(title: const Text('renderMode: ListView')),
5243-
body: Padding(
5244-
padding: const EdgeInsets.all(8.0),
5243+
body: const Padding(
5244+
padding: EdgeInsets.all(8.0),
52455245
child: HtmlWidget(kHtml, renderMode: RenderMode.listView),
52465246
),
52475247
);
52485248
}
52495249

52505250
class _SliverListScreen extends StatelessWidget {
52515251
@override
5252-
Widget build(BuildContext context) => Scaffold(
5252+
Widget build(BuildContext context) => const Scaffold(
52535253
body: CustomScrollView(
52545254
slivers: [
5255-
const SliverAppBar(
5255+
SliverAppBar(
52565256
title: Text('renderMode: SliverList'),
52575257
floating: true,
52585258
expandedHeight: 200,
52595259
flexibleSpace: Placeholder(),
52605260
),
52615261
SliverPadding(
5262-
padding: const EdgeInsets.all(8.0),
5262+
padding: EdgeInsets.all(8.0),
52635263
sliver: HtmlWidget(kHtml, renderMode: RenderMode.sliverList),
52645264
),
52655265
],

demo_app/lib/screens/iframe.dart

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class _State extends State<IframeScreen> {
3939
CheckboxListTile(
4040
value: webView,
4141
onChanged: (v) => setState(() => webView = v),
42-
title: HtmlWidget('<var>.webView</var>'),
42+
title: const HtmlWidget('<var>.webView</var>'),
4343
subtitle: const Text('Renders web view, default ❌'),
4444
),
4545
CheckboxListTile(
@@ -50,20 +50,34 @@ class _State extends State<IframeScreen> {
5050
}
5151
webViewJs = v;
5252
}),
53-
title: HtmlWidget('<var>.webViewJs</var>'),
53+
title: const HtmlWidget('<var>.webViewJs</var>'),
5454
subtitle: const Text('Allows JavaScript execution, default ✅'),
5555
),
5656
Padding(
5757
padding: const EdgeInsets.all(8.0),
5858
child: HtmlWidget(
5959
html,
60-
// ignore: deprecated_member_use
61-
webView: webView,
62-
// ignore: deprecated_member_use
63-
webViewJs: webViewJs,
60+
factoryBuilder: () => _WidgetFactory(
61+
webView: webView,
62+
webViewJs: webViewJs,
63+
),
64+
rebuildTriggers: RebuildTriggers([webView, webViewJs]),
6465
),
6566
),
6667
],
6768
),
6869
);
6970
}
71+
72+
class _WidgetFactory extends WidgetFactory {
73+
@override
74+
final bool webView;
75+
76+
@override
77+
final bool webViewJs;
78+
79+
_WidgetFactory({
80+
@required this.webView,
81+
@required this.webViewJs,
82+
});
83+
}

packages/enhanced/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 0.9.0
2+
3+
- Requires Flutter 3.3 (#821)
4+
- Add support for `SelectionArea` (#821)
5+
- Breaking changes: remove support for web view `HtmlWidget` parameters (#830)
6+
17
## 0.8.5
28

39
- Improve `IFRAME` error & timer handling (#709)

packages/enhanced/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Add this to your app's `pubspec.yaml` file:
2727

2828
```yaml
2929
dependencies:
30-
flutter_widget_from_html: ^0.8.5
30+
flutter_widget_from_html: ^0.9.0
3131
```
3232
3333
### Platform specific configuration
Lines changed: 17 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1-
import 'dart:async';
2-
3-
import 'package:flutter/material.dart';
41
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart'
5-
as core show HtmlWidget, RebuildTriggers;
2+
as core show HtmlWidget;
63

7-
import 'data.dart';
8-
import 'helpers.dart';
94
import 'widget_factory.dart';
105

116
export 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart'
@@ -14,85 +9,26 @@ export 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart
149
/// A widget that builds Flutter widget tree from HTML
1510
/// with support for IFRAME, VIDEO and many other tags.
1611
class HtmlWidget extends core.HtmlWidget {
17-
/// Controls whether IFRAME is rendered as [WebView].
18-
///
19-
/// See [WidgetFactory.webView].
20-
@Deprecated('Override WidgetFactory.webView instead')
21-
final bool webView;
22-
23-
/// Controls whether debugging is enabled in WebViews.
24-
///
25-
/// See [WidgetFactory.webViewDebuggingEnabled].
26-
@Deprecated('Override WidgetFactory.webViewDebuggingEnabled instead')
27-
final bool webViewDebuggingEnabled;
28-
29-
/// Controls whether to enable JavaScript in WebViews.
30-
///
31-
/// See [WidgetFactory.webViewJs].
32-
@Deprecated('Override WidgetFactory.webViewJs instead')
33-
final bool webViewJs;
34-
35-
/// Controls whether to always allow media playback in WebViews.
36-
///
37-
/// See [WidgetFactory.webViewMediaPlaybackAlwaysAllow].
38-
@Deprecated('Override WidgetFactory.webViewMediaPlaybackAlwaysAllow instead')
39-
final bool webViewMediaPlaybackAlwaysAllow;
40-
41-
/// The value used for the HTTP `User-Agent` request header in WebViews.
42-
///
43-
/// See [WidgetFactory.webViewUserAgent].
44-
@Deprecated('Override WidgetFactory.webViewUserAgent instead')
45-
final String? webViewUserAgent;
46-
4712
/// Creates a widget that builds Flutter widget tree from html.
4813
///
4914
/// The [html] argument must not be null.
50-
HtmlWidget(
51-
String html, {
52-
bool? buildAsync,
53-
bool enableCaching = true,
15+
const HtmlWidget(
16+
super.html, {
17+
super.buildAsync,
18+
bool super.enableCaching = true,
5419
WidgetFactory Function()? factoryBuilder,
55-
Key? key,
56-
Uri? baseUrl,
57-
CustomStylesBuilder? customStylesBuilder,
58-
CustomWidgetBuilder? customWidgetBuilder,
59-
OnErrorBuilder? onErrorBuilder,
60-
OnLoadingBuilder? onLoadingBuilder,
61-
void Function(ImageMetadata)? onTapImage,
62-
FutureOr<bool> Function(String)? onTapUrl,
63-
core.RebuildTriggers? rebuildTriggers,
64-
RenderMode renderMode = RenderMode.column,
65-
TextStyle? textStyle,
66-
@Deprecated('Override WidgetFactory.webView instead') this.webView = false,
67-
@Deprecated('Override WidgetFactory.webViewDebuggingEnabled instead')
68-
this.webViewDebuggingEnabled = false,
69-
@Deprecated('Override WidgetFactory.webViewJs instead')
70-
this.webViewJs = true,
71-
@Deprecated('Override WidgetFactory.webViewMediaPlaybackAlwaysAllow')
72-
this.webViewMediaPlaybackAlwaysAllow = false,
73-
@Deprecated('Override WidgetFactory.webViewUserAgent instead')
74-
this.webViewUserAgent,
75-
}) : super(
76-
html,
77-
baseUrl: baseUrl,
78-
buildAsync: buildAsync,
79-
customStylesBuilder: customStylesBuilder,
80-
customWidgetBuilder: customWidgetBuilder,
81-
enableCaching: enableCaching,
82-
factoryBuilder: factoryBuilder ?? _getEnhancedWf,
83-
onErrorBuilder: onErrorBuilder,
84-
onLoadingBuilder: onLoadingBuilder,
85-
onTapImage: onTapImage,
86-
onTapUrl: onTapUrl,
87-
rebuildTriggers: core.RebuildTriggers([
88-
webView,
89-
webViewJs,
90-
if (rebuildTriggers != null) rebuildTriggers,
91-
]),
92-
renderMode: renderMode,
93-
textStyle: textStyle,
94-
key: key,
95-
);
20+
super.key,
21+
super.baseUrl,
22+
super.customStylesBuilder,
23+
super.customWidgetBuilder,
24+
super.onErrorBuilder,
25+
super.onLoadingBuilder,
26+
super.onTapImage,
27+
super.onTapUrl,
28+
super.rebuildTriggers,
29+
super.renderMode,
30+
super.textStyle,
31+
}) : super(factoryBuilder: factoryBuilder ?? _getEnhancedWf);
9632

9733
static WidgetFactory _getEnhancedWf() => WidgetFactory();
9834
}
Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
// ignore_for_file: deprecated_member_use_from_same_package
2-
3-
import 'package:flutter/widgets.dart';
41
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart'
52
as core show WidgetFactory;
63
import 'package:fwfh_cached_network_image/fwfh_cached_network_image.dart';
@@ -10,8 +7,6 @@ import 'package:fwfh_svg/fwfh_svg.dart';
107
import 'package:fwfh_url_launcher/fwfh_url_launcher.dart';
118
import 'package:fwfh_webview/fwfh_webview.dart';
129

13-
import 'html_widget.dart';
14-
1510
/// A factory to build widgets with [WebView], [VideoPlayer], etc.
1611
class WidgetFactory extends core.WidgetFactory
1712
with
@@ -20,30 +15,4 @@ class WidgetFactory extends core.WidgetFactory
2015
JustAudioFactory,
2116
SvgFactory,
2217
UrlLauncherFactory,
23-
WebViewFactory {
24-
HtmlWidget? _widget;
25-
26-
@override
27-
bool get webView => _widget?.webView == true;
28-
29-
@override
30-
bool get webViewDebuggingEnabled => _widget?.webViewDebuggingEnabled == true;
31-
32-
@override
33-
bool get webViewJs => _widget?.webViewJs == true;
34-
35-
@override
36-
bool get webViewMediaPlaybackAlwaysAllow =>
37-
_widget?.webViewMediaPlaybackAlwaysAllow == true;
38-
39-
@override
40-
String? get webViewUserAgent => _widget?.webViewUserAgent;
41-
42-
@override
43-
void reset(State state) {
44-
final widget = state.widget;
45-
_widget = widget is HtmlWidget ? widget : null;
46-
47-
super.reset(state);
48-
}
49-
}
18+
WebViewFactory {}

packages/enhanced/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
name: flutter_widget_from_html
2-
version: 0.8.5
2+
version: 0.9.0
33
description: Flutter package to render html as widgets that supports hyperlink, image, audio, video, iframe and many other tags.
44
homepage: https://github.com/daohoangson/flutter_widget_from_html
55

66
environment:
7-
flutter: ">=2.8.0"
8-
sdk: ">=2.14.0 <3.0.0"
7+
flutter: ">=3.3.0"
8+
sdk: ">=2.18.0 <3.0.0"
99

1010
dependencies:
1111
flutter:

0 commit comments

Comments
 (0)