Skip to content

Commit bb367cc

Browse files
committed
Fix conflict
1 parent 64ab0cb commit bb367cc

File tree

10 files changed

+52
-88
lines changed

10 files changed

+52
-88
lines changed

demo_app/test/goldens/SVG.png

56 Bytes
Loading

packages/enhanced/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ description: Flutter package to render html as widgets that supports hyperlink,
44
homepage: https://github.com/daohoangson/flutter_widget_from_html
55

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

1010
dependencies:
1111
flutter:

packages/enhanced/test/mixin_test.dart

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,10 @@ void main() {
1616
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
1717
SVG support is not enabled.
1818
</svg>''';
19-
final e = await explain(tester, html);
20-
final explained = e.replaceAll(RegExp('String#[0-9a-f]+,'), 'String,');
19+
final explained = await explain(tester, html);
2120
expect(
2221
explained,
23-
equals(
24-
'[SvgPicture:pictureProvider='
25-
'StringPicture(String, colorFilter: null)]',
26-
),
22+
equals('[SvgPicture:bytesLoader=SvgStringLoader]'),
2723
);
2824
});
2925

@@ -37,8 +33,7 @@ void main() {
3733
equals(
3834
'[CssSizing:$sizingConstraints,child='
3935
'[SvgPicture:'
40-
'pictureProvider=ExactAssetPicture(name: "$assetName", '
41-
'bundle: null, colorFilter: null)'
36+
'bytesLoader=SvgAssetLoader(assetName: $assetName, packageName: null)'
4237
']]',
4338
),
4439
);

packages/fwfh_svg/example/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'package:fwfh_svg/fwfh_svg.dart';
55
void main() => runApp(const MyApp());
66

77
class MyApp extends StatelessWidget {
8-
const MyApp({Key? key}) : super(key: key);
8+
const MyApp({super.key});
99

1010
@override
1111
Widget build(BuildContext context) {
Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
import 'dart:typed_data';
2-
31
import 'package:flutter_svg/flutter_svg.dart';
42

5-
PictureProvider? filePicture(
6-
PictureInfoDecoderBuilder<Uint8List> decoderBuilder,
7-
String path,
8-
) =>
9-
null;
3+
BytesLoader? fileLoader(String path) => null;
Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import 'dart:io';
2-
import 'dart:typed_data';
32

43
import 'package:flutter_svg/flutter_svg.dart';
54

6-
PictureProvider? filePicture(
7-
PictureInfoDecoderBuilder<Uint8List> decoderBuilder,
8-
String path,
9-
) =>
10-
FilePicture(decoderBuilder, File(path));
5+
BytesLoader? fileLoader(String path) => SvgFileLoader(File(path));

packages/fwfh_svg/lib/src/svg_factory.dart

Lines changed: 24 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -20,85 +20,67 @@ mixin SvgFactory on WidgetFactory {
2020
Widget? buildImageWidget(BuildMetadata meta, ImageSource src) {
2121
final url = src.url;
2222

23-
PictureProvider? provider;
23+
BytesLoader? bytesLoader;
2424
if (url.startsWith('data:image/svg+xml')) {
25-
provider = imageSvgFromDataUri(url);
25+
bytesLoader = imageSvgFromDataUri(url);
2626
} else if (Uri.tryParse(url)?.path.toLowerCase().endsWith('.svg') == true) {
2727
if (url.startsWith('asset:')) {
28-
provider = imageSvgFromAsset(url);
28+
bytesLoader = imageSvgFromAsset(url);
2929
} else if (url.startsWith('file:')) {
30-
provider = imageSvgFromFileUri(url);
30+
bytesLoader = imageSvgFromFileUri(url);
3131
} else {
32-
provider = imageSvgFromNetwork(url);
32+
bytesLoader = imageSvgFromNetwork(url);
3333
}
3434
}
3535

36-
if (provider == null) {
36+
if (bytesLoader == null) {
3737
return super.buildImageWidget(meta, src);
3838
}
3939

40-
return _buildSvgPicture(meta, src, provider);
40+
return _buildSvgPicture(meta, src, bytesLoader);
4141
}
4242

43-
/// Returns an [ExactAssetPicture].
44-
PictureProvider? imageSvgFromAsset(String url) {
43+
/// Returns an [SvgAssetLoader].
44+
BytesLoader? imageSvgFromAsset(String url) {
4545
final uri = Uri.parse(url);
4646
final assetName = uri.path;
4747
if (assetName.isEmpty) {
4848
return null;
4949
}
5050

51-
return ExactAssetPicture(
52-
svgAllowDrawingOutsideViewBox
53-
? SvgPicture.svgStringDecoderOutsideViewBoxBuilder
54-
: SvgPicture.svgStringDecoderBuilder,
51+
return SvgAssetLoader(
5552
assetName,
56-
package: uri.queryParameters['package'],
53+
packageName: uri.queryParameters['package'],
5754
);
5855
}
5956

60-
/// Returns a [MemoryPicture].
61-
PictureProvider? imageSvgFromDataUri(String dataUri) {
57+
/// Returns a [SvgBytesLoader].
58+
BytesLoader? imageSvgFromDataUri(String dataUri) {
6259
final bytes = bytesFromDataUri(dataUri);
6360
if (bytes == null) {
6461
return null;
6562
}
6663

67-
return MemoryPicture(
68-
svgAllowDrawingOutsideViewBox
69-
? SvgPicture.svgByteDecoderOutsideViewBoxBuilder
70-
: SvgPicture.svgByteDecoderBuilder,
71-
bytes,
72-
);
64+
return SvgBytesLoader(bytes);
7365
}
7466

75-
/// Returns a [FilePicture].
76-
PictureProvider? imageSvgFromFileUri(String url) {
67+
/// Returns a [SvgFileLoader].
68+
BytesLoader? imageSvgFromFileUri(String url) {
7769
final filePath = Uri.parse(url).toFilePath();
7870
if (filePath.isEmpty) {
7971
return null;
8072
}
8173

82-
return filePicture(
83-
svgAllowDrawingOutsideViewBox
84-
? SvgPicture.svgByteDecoderOutsideViewBoxBuilder
85-
: SvgPicture.svgByteDecoderBuilder,
86-
filePath,
87-
);
74+
return fileLoader(filePath);
8875
}
8976

90-
/// Returns a [NetworkPicture].
91-
PictureProvider? imageSvgFromNetwork(String url) {
77+
/// Returns a [SvgNetworkLoader].
78+
BytesLoader? imageSvgFromNetwork(String url) {
9279
if (url.isEmpty) {
9380
return null;
9481
}
9582

96-
return NetworkPicture(
97-
svgAllowDrawingOutsideViewBox
98-
? SvgPicture.svgByteDecoderOutsideViewBoxBuilder
99-
: SvgPicture.svgByteDecoderBuilder,
100-
url,
101-
);
83+
return SvgNetworkLoader(url);
10284
}
10385

10486
@override
@@ -107,13 +89,8 @@ mixin SvgFactory on WidgetFactory {
10789
case 'svg':
10890
_tagSvg ??= BuildOp(
10991
onWidgets: (meta, widgets) {
110-
final provider = StringPicture(
111-
svgAllowDrawingOutsideViewBox
112-
? SvgPicture.svgStringDecoderOutsideViewBoxBuilder
113-
: SvgPicture.svgStringDecoderBuilder,
114-
meta.element.outerHtml,
115-
);
116-
return [_buildSvgPicture(meta, const ImageSource(''), provider)];
92+
final bytesLoader = SvgStringLoader(meta.element.outerHtml);
93+
return [_buildSvgPicture(meta, const ImageSource(''), bytesLoader)];
11794
},
11895
);
11996
meta.register(_tagSvg!);
@@ -126,13 +103,13 @@ mixin SvgFactory on WidgetFactory {
126103
Widget _buildSvgPicture(
127104
BuildMetadata meta,
128105
ImageSource src,
129-
PictureProvider provider,
106+
BytesLoader bytesLoader,
130107
) {
131108
final image = src.image;
132109
final semanticLabel = image?.alt ?? image?.title;
133110

134111
return SvgPicture(
135-
provider,
112+
bytesLoader,
136113
allowDrawingOutsideViewBox: svgAllowDrawingOutsideViewBox,
137114
excludeFromSemantics: semanticLabel == null,
138115
fit: BoxFit.fill,

packages/fwfh_svg/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ description: WidgetFactory extension to render SVG with flutter_svg plugin.
44
homepage: https://github.com/daohoangson/flutter_widget_from_html
55

66
environment:
7-
flutter: ">=2.5.0"
8-
sdk: ">=2.14.0 <3.0.0"
7+
flutter: ">=3.7.0"
8+
sdk: ">=2.19.0 <3.0.0"
99

1010
dependencies:
1111
flutter:
1212
sdk: flutter
13-
flutter_svg: "<3.0.0"
13+
flutter_svg: ^2.0.0
1414
flutter_widget_from_html_core: ">=0.8.0 <0.10.0"
1515

1616
dependency_overrides:

packages/fwfh_svg/test/_.dart

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,16 @@ import '../../core/test/_.dart' as helper;
88

99
String? svgExplainer(helper.Explainer parent, Widget widget) {
1010
if (widget is SvgPicture) {
11-
return '[SvgPicture:pictureProvider=${widget.pictureProvider}]';
11+
final bytesLoader = widget.bytesLoader;
12+
var bytesLoaderString = bytesLoader.runtimeType.toString();
13+
if (bytesLoader is SvgAssetLoader) {
14+
bytesLoaderString = 'SvgAssetLoader(assetName: ${bytesLoader.assetName}, '
15+
'packageName: ${bytesLoader.packageName})';
16+
} else if (bytesLoader is SvgFileLoader) {
17+
bytesLoaderString = 'SvgFileLoader(${bytesLoader.file.path})';
18+
}
19+
20+
return '[SvgPicture:bytesLoader=$bytesLoaderString]';
1221
}
1322

1423
return null;

packages/fwfh_svg/test/svg_factory_test.dart

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import 'dart:convert';
22
import 'dart:io';
33

44
import 'package:flutter/material.dart';
5-
import 'package:flutter_svg/flutter_svg.dart';
65
import 'package:flutter_test/flutter_test.dart';
76
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
87
import 'package:fwfh_svg/fwfh_svg.dart';
@@ -36,9 +35,7 @@ Future<void> main() async {
3635
final explained = await helper.explain(tester, html);
3736
expect(
3837
explained.replaceAll(RegExp('String#[^,]+,'), 'String,'),
39-
equals(
40-
'[SvgPicture:pictureProvider=StringPicture(String, colorFilter: null)]',
41-
),
38+
equals('[SvgPicture:bytesLoader=SvgStringLoader]'),
4239
);
4340
});
4441

@@ -52,8 +49,7 @@ Future<void> main() async {
5249
equals(
5350
'[CssSizing:$sizingConstraints,child='
5451
'[SvgPicture:'
55-
'pictureProvider=ExactAssetPicture(name: "$assetName", '
56-
'bundle: null, colorFilter: null)'
52+
'bytesLoader=SvgAssetLoader(assetName: test/images/logo.svg, packageName: null)'
5753
']]',
5854
),
5955
);
@@ -68,7 +64,7 @@ Future<void> main() async {
6864
equals(
6965
'[CssSizing:$sizingConstraints,child='
7066
'[SvgPicture:'
71-
'pictureProvider=FilePicture("$filePath", colorFilter: null)'
67+
'bytesLoader=SvgFileLoader($filePath)'
7268
']]',
7369
),
7470
);
@@ -93,7 +89,7 @@ Future<void> main() async {
9389
explained,
9490
equals(
9591
'[CssSizing:$sizingConstraints,child='
96-
'[SvgPicture:pictureProvider=MemoryPicture(bytes)]'
92+
'[SvgPicture:bytesLoader=SvgBytesLoader]'
9793
']',
9894
),
9995
);
@@ -107,15 +103,15 @@ Future<void> main() async {
107103
explained,
108104
equals(
109105
'[CssSizing:$sizingConstraints,child='
110-
'[SvgPicture:pictureProvider=MemoryPicture(bytes)]'
106+
'[SvgPicture:bytesLoader=SvgBytesLoader]'
111107
']',
112108
),
113109
);
114110
});
115111
});
116112

117113
group('network picture', () {
118-
const expectedPicture = '└RawPicture';
114+
const expectedPicture = '└_RawPictureVectorGraphicWidget';
119115

120116
testWidgets('renders picture', (WidgetTester tester) async {
121117
const src = 'http://domain.com/loading.svg';
@@ -208,7 +204,6 @@ Future<void> main() async {
208204
() {
209205
setUp(() {
210206
WidgetFactory.debugDeterministicLoadingWidget = true;
211-
PictureProvider.cache.clear();
212207
});
213208
tearDown(
214209
() => WidgetFactory.debugDeterministicLoadingWidget = false,
@@ -293,8 +288,7 @@ class _Golden extends StatelessWidget {
293288
const _Golden(
294289
this.contents, {
295290
required this.allowDrawingOutsideViewBox,
296-
Key? key,
297-
}) : super(key: key);
291+
});
298292

299293
@override
300294
Widget build(BuildContext _) => Scaffold(

0 commit comments

Comments
 (0)