Skip to content

Commit be0cf0c

Browse files
committed
fix: Fixed some SI files that were not loading.
1 parent ad15112 commit be0cf0c

File tree

2 files changed

+46
-6
lines changed

2 files changed

+46
-6
lines changed

lib/widgets/sized_scalable_image.dart

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import 'dart:io';
2+
13
import 'package:flutter/material.dart';
24
import 'package:flutter/services.dart';
35
import 'package:jovial_svg/jovial_svg.dart';
6+
import 'package:jovial_svg/src/compact.dart';
47

58
/// A sized scalable image widget.
69
class SizedScalableImageWidget extends StatelessWidget {
@@ -39,11 +42,14 @@ class SizedScalableImageWidget extends StatelessWidget {
3942

4043
@override
4144
Widget build(BuildContext context) {
45+
File file = File(asset);
4246
Widget child = ScalableImageWidget.fromSISource(
43-
si: ScalableImageSource.fromSI(
44-
rootBundle,
45-
asset,
46-
),
47+
si: file.existsSync()
48+
? _SIFileSource(file, null)
49+
: ScalableImageSource.fromSI(
50+
rootBundle,
51+
asset,
52+
),
4753
fit: fit,
4854
alignment: alignment,
4955
);
@@ -74,3 +80,38 @@ class SizedScalableImageWidget extends StatelessWidget {
7480
return child;
7581
}
7682
}
83+
84+
class _SIFileSource extends ScalableImageSource {
85+
final File file;
86+
final Color? currentColor;
87+
88+
_SIFileSource(this.file, this.currentColor);
89+
90+
@override
91+
Future<ScalableImage> get si => createSI();
92+
93+
@override
94+
Future<ScalableImage> createSI({bool compact = false}) async {
95+
ScalableImageCompact scalableImageCompact = ScalableImageCompact.fromBytes(file.readAsBytesSync(), currentColor: currentColor);
96+
if (compact) {
97+
return scalableImageCompact;
98+
} else {
99+
return scalableImageCompact.toDag();
100+
}
101+
}
102+
103+
@override
104+
bool operator ==(final Object other) {
105+
if (other is _SIFileSource) {
106+
return file == other.file && currentColor == other.currentColor;
107+
} else {
108+
return false;
109+
}
110+
}
111+
112+
@override
113+
int get hashCode => 0xf67cd716 ^ Object.hash(file, currentColor);
114+
115+
@override
116+
String toString() => '__SIFileSource($file $currentColor)';
117+
}

lib/widgets/smart_image.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'dart:io';
22

33
import 'package:flutter/material.dart';
4-
import 'package:flutter/services.dart';
54
import 'package:jovial_svg/jovial_svg.dart';
65
import 'package:open_authenticator/utils/image_type.dart';
76
import 'package:open_authenticator/widgets/sized_scalable_image.dart';
@@ -76,7 +75,7 @@ class SmartImageWidget extends StatelessWidget {
7675
width: width,
7776
height: height,
7877
child: ScalableImageWidget.fromSISource(
79-
si: ScalableImageSource.fromSvg(rootBundle, source),
78+
si: ScalableImageSource.fromSvgFile(file, () => file.readAsString()),
8079
key: imageKey,
8180
fit: fit,
8281
),

0 commit comments

Comments
 (0)