fix unloading of tiles causing high internet usage

This commit is contained in:
2023-07-05 22:30:09 +02:00
parent fc96c5c7d2
commit 6941225e6d
6 changed files with 333 additions and 38 deletions

View File

@ -76,7 +76,8 @@ class _PreviewTileState extends State<PreviewTile> {
);
// precache image to avoid loading time to render image
await precacheImage(img.image, context);
if(context.mounted)
await precacheImage(img.image, context);
return img;
}
@ -103,28 +104,28 @@ class _PreviewTileState extends State<PreviewTile> {
child: Stack(
children: [
Container(
color: const Color(0xff3f3f3f),
child: Column(
children: [
ClipRRect(
child: image,
borderRadius: BorderRadius.circular(20.0),
child: image,
),
SizedBox(
const SizedBox(
height: 3,
),
Text(
widget.dta.title,
style: TextStyle(
fontSize: isTV() ? 8 : 10.5, color: Color(0xffe9e9e9)),
fontSize: isTV() ? 8 : 10.5, color: const Color(0xffe9e9e9)),
overflow: TextOverflow.clip,
maxLines: 1,
),
SizedBox(
const SizedBox(
height: 3,
),
],
),
color: Color(0xff3f3f3f),
),
Positioned.fill(
child: Material(
@ -157,21 +158,24 @@ class _PreviewTileState extends State<PreviewTile> {
@override
Widget build(BuildContext context) {
return FutureBuilder<Image>(
future: _preview, // a previously-obtained Future<String> or null
builder: (BuildContext context, AsyncSnapshot<Image> snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return _buildLoader();
}
return ConstrainedBox(
constraints: const BoxConstraints(minHeight: 200, minWidth: 200),
child: FutureBuilder<Image>(
future: _preview, // a previously-obtained Future<String> or null
builder: (BuildContext context, AsyncSnapshot<Image> snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return _buildLoader();
}
if (snapshot.hasError) {
return Text("Error");
} else if (snapshot.hasData) {
return _buildTile(snapshot.data!);
} else {
return _buildLoader();
}
},
if (snapshot.hasError) {
return Text("Error");
} else if (snapshot.hasData) {
return _buildTile(snapshot.data!);
} else {
return _buildLoader();
}
},
),
);
}
}