Skip to content

Commit 9bf0662

Browse files
Merge pull request #1088 from Sub6Resources/pub-score-fixes
Fix issues brought up by pub.dev score analyzer
2 parents c797ef8 + a1a1cc9 commit 9bf0662

26 files changed

+886
-677
lines changed

lib/custom_render.dart

Lines changed: 443 additions & 358 deletions
Large diffs are not rendered by default.

lib/flutter_html.dart

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,19 @@ class _HtmlState extends State<Html> {
159159
@override
160160
void initState() {
161161
super.initState();
162-
documentElement = widget.data != null ? HtmlParser.parseHTML(widget.data!) : widget.documentElement!;
162+
documentElement = widget.data != null
163+
? HtmlParser.parseHTML(widget.data!)
164+
: widget.documentElement!;
163165
}
164166

165167
@override
166168
void didUpdateWidget(Html oldWidget) {
167169
super.didUpdateWidget(oldWidget);
168-
if ((widget.data != null && oldWidget.data != widget.data) || oldWidget.documentElement != widget.documentElement) {
169-
documentElement = widget.data != null ? HtmlParser.parseHTML(widget.data!) : widget.documentElement!;
170+
if ((widget.data != null && oldWidget.data != widget.data) ||
171+
oldWidget.documentElement != widget.documentElement) {
172+
documentElement = widget.data != null
173+
? HtmlParser.parseHTML(widget.data!)
174+
: widget.documentElement!;
170175
}
171176
}
172177

@@ -333,7 +338,9 @@ class _SelectableHtmlState extends State<SelectableHtml> {
333338
@override
334339
void initState() {
335340
super.initState();
336-
documentElement = widget.data != null ? HtmlParser.parseHTML(widget.data!) : widget.documentElement!;
341+
documentElement = widget.data != null
342+
? HtmlParser.parseHTML(widget.data!)
343+
: widget.documentElement!;
337344
}
338345

339346
@override
@@ -354,7 +361,8 @@ class _SelectableHtmlState extends State<SelectableHtml> {
354361
customRenders: {}
355362
..addAll(widget.customRenders)
356363
..addAll(defaultRenders),
357-
tagsList: widget.tagsList.isEmpty ? SelectableHtml.tags : widget.tagsList,
364+
tagsList:
365+
widget.tagsList.isEmpty ? SelectableHtml.tags : widget.tagsList,
358366
selectionControls: widget.selectionControls,
359367
scrollPhysics: widget.scrollPhysics,
360368
),
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Example
2+
3+
### Coming soon...

packages/flutter_html_all/lib/flutter_html_all.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/// Package flutter_html_all is used to get access to all
2+
/// of the extended features of the flutter_html package.
13
library flutter_html_all;
24

35
export 'package:flutter_html_audio/flutter_html_audio.dart';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Example
2+
3+
### Coming soon...

packages/flutter_html_audio/lib/flutter_html_audio.dart

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,24 @@ import 'package:flutter_html/flutter_html.dart';
66
import 'package:video_player/video_player.dart';
77
import 'package:html/dom.dart' as dom;
88

9-
typedef AudioControllerCallback = void Function(dom.Element?, ChewieAudioController, VideoPlayerController);
9+
typedef AudioControllerCallback = void Function(
10+
dom.Element?, ChewieAudioController, VideoPlayerController);
1011

11-
CustomRender audioRender({AudioControllerCallback? onControllerCreated})
12-
=> CustomRender.widget(widget: (context, buildChildren)
13-
=> AudioWidget(context: context, callback: onControllerCreated));
12+
/// The CustomRender function for the `<audio>` tag
13+
CustomRender audioRender({AudioControllerCallback? onControllerCreated}) =>
14+
CustomRender.widget(
15+
widget: (context, buildChildren) => AudioWidget(
16+
context: context,
17+
callback: onControllerCreated,
18+
),
19+
);
1420

21+
/// The CustomRenderMatcher that will match the `<audio>` tag
1522
CustomRenderMatcher audioMatcher() => (context) {
16-
return context.tree.element?.localName == "audio";
17-
};
23+
return context.tree.element?.localName == "audio";
24+
};
1825

26+
/// A widget used for rendering an audio player in the HTML tree
1927
class AudioWidget extends StatefulWidget {
2028
final RenderContext context;
2129
final AudioControllerCallback? callback;
@@ -39,7 +47,8 @@ class _AudioWidgetState extends State<AudioWidget> {
3947
sources = <String?>[
4048
if (widget.context.tree.element?.attributes['src'] != null)
4149
widget.context.tree.element!.attributes['src'],
42-
...ReplacedElement.parseMediaSources(widget.context.tree.element!.children),
50+
...ReplacedElement.parseMediaSources(
51+
widget.context.tree.element!.children),
4352
];
4453
if (sources.isNotEmpty && sources.first != null) {
4554
audioController = VideoPlayerController.network(
@@ -49,10 +58,12 @@ class _AudioWidgetState extends State<AudioWidget> {
4958
videoPlayerController: audioController!,
5059
autoPlay: widget.context.tree.element?.attributes['autoplay'] != null,
5160
looping: widget.context.tree.element?.attributes['loop'] != null,
52-
showControls: widget.context.tree.element?.attributes['controls'] != null,
61+
showControls:
62+
widget.context.tree.element?.attributes['controls'] != null,
5363
autoInitialize: true,
5464
);
55-
widget.callback?.call(widget.context.tree.element, chewieAudioController!, audioController!);
65+
widget.callback?.call(widget.context.tree.element, chewieAudioController!,
66+
audioController!);
5667
}
5768
super.initState();
5869
}
@@ -72,11 +83,10 @@ class _AudioWidgetState extends State<AudioWidget> {
7283
return Container(
7384
key: widget.context.key,
7485
width: widget.context.style.width ?? 300,
75-
height: Theme.of(bContext).platform == TargetPlatform.android
76-
? 48 : 75,
86+
height: Theme.of(bContext).platform == TargetPlatform.android ? 48 : 75,
7787
child: ChewieAudio(
7888
controller: chewieAudioController!,
7989
),
8090
);
8191
}
82-
}
92+
}

packages/flutter_html_audio/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: flutter_html_audio
2-
description: Audio widget for flutter_html.
2+
description: This extension package allows the <audio> tag to be rendered using the flutter_html package
33
version: 3.0.0-alpha.3
44
homepage: https://github.com/Sub6Resources/flutter_html
55

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Example
2+
3+
### Coming soon...

packages/flutter_html_iframe/lib/flutter_html_iframe.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ library flutter_html_iframe;
33
import 'package:flutter_html/custom_render.dart';
44

55
export 'iframe_unsupported.dart'
6-
if (dart.library.io) 'iframe_mobile.dart'
7-
if (dart.library.html) 'iframe_web.dart';
6+
if (dart.library.io) 'iframe_mobile.dart'
7+
if (dart.library.html) 'iframe_web.dart';
88

99
CustomRenderMatcher iframeMatcher() => (context) {
10-
return context.tree.element?.localName == "iframe";
11-
};
10+
return context.tree.element?.localName == "iframe";
11+
};

packages/flutter_html_iframe/lib/iframe_mobile.dart

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,33 @@ import 'package:flutter/material.dart';
44
import 'package:flutter_html/flutter_html.dart';
55
import 'package:webview_flutter/webview_flutter.dart';
66

7-
CustomRender iframeRender({NavigationDelegate? navigationDelegate}) => CustomRender.widget(widget: (context, buildChildren) {
8-
final sandboxMode = context.tree.element?.attributes["sandbox"];
9-
final UniqueKey key = UniqueKey();
10-
final givenWidth = double.tryParse(context.tree.element?.attributes['width'] ?? "");
11-
final givenHeight = double.tryParse(context.tree.element?.attributes['height'] ?? "");
12-
return Container(
13-
width: givenWidth ?? (givenHeight ?? 150) * 2,
14-
height: givenHeight ?? (givenWidth ?? 300) / 2,
15-
child: ContainerSpan(
16-
style: context.style,
17-
newContext: context,
18-
child: WebView(
19-
initialUrl: context.tree.element?.attributes['src'],
20-
key: key,
21-
javascriptMode: sandboxMode == null || sandboxMode == "allow-scripts"
22-
? JavascriptMode.unrestricted
23-
: JavascriptMode.disabled,
24-
navigationDelegate: navigationDelegate,
25-
gestureRecognizers: {
26-
Factory<VerticalDragGestureRecognizer>(() => VerticalDragGestureRecognizer())
27-
},
28-
),
29-
),
30-
);
31-
});
7+
CustomRender iframeRender({NavigationDelegate? navigationDelegate}) =>
8+
CustomRender.widget(widget: (context, buildChildren) {
9+
final sandboxMode = context.tree.element?.attributes["sandbox"];
10+
final UniqueKey key = UniqueKey();
11+
final givenWidth =
12+
double.tryParse(context.tree.element?.attributes['width'] ?? "");
13+
final givenHeight =
14+
double.tryParse(context.tree.element?.attributes['height'] ?? "");
15+
return Container(
16+
width: givenWidth ?? (givenHeight ?? 150) * 2,
17+
height: givenHeight ?? (givenWidth ?? 300) / 2,
18+
child: ContainerSpan(
19+
style: context.style,
20+
newContext: context,
21+
child: WebView(
22+
initialUrl: context.tree.element?.attributes['src'],
23+
key: key,
24+
javascriptMode:
25+
sandboxMode == null || sandboxMode == "allow-scripts"
26+
? JavascriptMode.unrestricted
27+
: JavascriptMode.disabled,
28+
navigationDelegate: navigationDelegate,
29+
gestureRecognizers: {
30+
Factory<VerticalDragGestureRecognizer>(
31+
() => VerticalDragGestureRecognizer())
32+
},
33+
),
34+
),
35+
);
36+
});

packages/flutter_html_iframe/lib/iframe_unsupported.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ import 'package:flutter/material.dart';
22
import 'package:flutter_html/flutter_html.dart';
33
import 'package:webview_flutter/webview_flutter.dart';
44

5-
CustomRender iframeRender({NavigationDelegate? navigationDelegate}) => CustomRender.widget(widget: (context, buildChildren) {
6-
return Container(
7-
child: Text("Iframes are currently not supported in this environment"),
8-
);
9-
});
5+
CustomRender iframeRender({NavigationDelegate? navigationDelegate}) =>
6+
CustomRender.widget(widget: (context, buildChildren) {
7+
return Container(
8+
child: Text("Iframes are currently not supported in this environment"),
9+
);
10+
});

packages/flutter_html_iframe/lib/iframe_web.dart

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,46 @@ import 'dart:html' as html;
99

1010
import 'package:webview_flutter/webview_flutter.dart';
1111

12-
CustomRender iframeRender({NavigationDelegate? navigationDelegate}) => CustomRender.widget(widget: (context, buildChildren) {
13-
final givenWidth = double.tryParse(context.tree.element?.attributes['width'] ?? "");
14-
final givenHeight = double.tryParse(context.tree.element?.attributes['height'] ?? "");
15-
final html.IFrameElement iframe = html.IFrameElement()
16-
..width = (givenWidth ?? (givenHeight ?? 150) * 2).toString()
17-
..height = (givenHeight ?? (givenWidth ?? 300) / 2).toString()
18-
..src = context.tree.element?.attributes['src']
19-
..style.border = 'none';
20-
final String createdViewId = getRandString(10);
21-
ui.platformViewRegistry.registerViewFactory(createdViewId, (int viewId) => iframe);
22-
return Container(
23-
width: double.tryParse(context.tree.element?.attributes['width'] ?? "")
24-
?? (double.tryParse(context.tree.element?.attributes['height'] ?? "") ?? 150) * 2,
25-
height: double.tryParse(context.tree.element?.attributes['height'] ?? "")
26-
?? (double.tryParse(context.tree.element?.attributes['width'] ?? "") ?? 300) / 2,
27-
child: ContainerSpan(
28-
style: context.style,
29-
newContext: context,
30-
child: Directionality(
31-
textDirection: TextDirection.ltr,
32-
child: HtmlElementView(
33-
viewType: createdViewId,
34-
)
35-
),
36-
)
37-
);
38-
});
12+
CustomRender iframeRender({NavigationDelegate? navigationDelegate}) =>
13+
CustomRender.widget(widget: (context, buildChildren) {
14+
final givenWidth =
15+
double.tryParse(context.tree.element?.attributes['width'] ?? "");
16+
final givenHeight =
17+
double.tryParse(context.tree.element?.attributes['height'] ?? "");
18+
final html.IFrameElement iframe = html.IFrameElement()
19+
..width = (givenWidth ?? (givenHeight ?? 150) * 2).toString()
20+
..height = (givenHeight ?? (givenWidth ?? 300) / 2).toString()
21+
..src = context.tree.element?.attributes['src']
22+
..style.border = 'none';
23+
final String createdViewId = getRandString(10);
24+
ui.platformViewRegistry
25+
.registerViewFactory(createdViewId, (int viewId) => iframe);
26+
return Container(
27+
width: double.tryParse(
28+
context.tree.element?.attributes['width'] ?? "") ??
29+
(double.tryParse(
30+
context.tree.element?.attributes['height'] ?? "") ??
31+
150) *
32+
2,
33+
height: double.tryParse(
34+
context.tree.element?.attributes['height'] ?? "") ??
35+
(double.tryParse(
36+
context.tree.element?.attributes['width'] ?? "") ??
37+
300) /
38+
2,
39+
child: ContainerSpan(
40+
style: context.style,
41+
newContext: context,
42+
child: Directionality(
43+
textDirection: TextDirection.ltr,
44+
child: HtmlElementView(
45+
viewType: createdViewId,
46+
)),
47+
));
48+
});
3949

4050
String getRandString(int len) {
4151
var random = Random.secure();
42-
var values = List<int>.generate(len, (i) => random.nextInt(255));
52+
var values = List<int>.generate(len, (i) => random.nextInt(255));
4353
return base64UrlEncode(values);
44-
}
54+
}

packages/flutter_html_iframe/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: flutter_html_iframe
2-
description: Iframe widget for flutter_html.
2+
description: This extension package allows the <iframe> tag to be rendered using the flutter_html package
33
version: 3.0.0-alpha.3
44
homepage: https://github.com/Sub6Resources/flutter_html
55

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Example
2+
3+
### Coming soon...

0 commit comments

Comments
 (0)