forked from Henry-Hiles/nexus
Working images
This commit is contained in:
parent
34f45c929a
commit
2372ecd141
20 changed files with 388 additions and 375 deletions
|
|
@ -1,14 +1,19 @@
|
|||
import "package:color_hash/color_hash.dart";
|
||||
import "package:cross_cache/cross_cache.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
import "package:nexus/controllers/client_state_controller.dart";
|
||||
import "package:nexus/controllers/cross_cache_controller.dart";
|
||||
import "package:nexus/helpers/extensions/get_headers.dart";
|
||||
import "package:nexus/helpers/extensions/mxc_to_https.dart";
|
||||
|
||||
class AvatarOrHash extends StatelessWidget {
|
||||
class AvatarOrHash extends ConsumerWidget {
|
||||
final Uri? avatar;
|
||||
final String title;
|
||||
final Widget? fallback;
|
||||
final bool hasBadge;
|
||||
final int badgeNumber;
|
||||
final double height;
|
||||
final Map<String, String> headers;
|
||||
const AvatarOrHash(
|
||||
this.avatar,
|
||||
this.title, {
|
||||
|
|
@ -16,15 +21,14 @@ class AvatarOrHash extends StatelessWidget {
|
|||
this.badgeNumber = 0,
|
||||
this.hasBadge = false,
|
||||
this.height = 24,
|
||||
required this.headers,
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final box = ColoredBox(
|
||||
color: ColorHash(title).color,
|
||||
child: Center(child: Text(title[0])),
|
||||
child: Center(child: Text(title.isEmpty ? "" : title[0])),
|
||||
);
|
||||
return SizedBox(
|
||||
width: height,
|
||||
|
|
@ -42,9 +46,21 @@ class AvatarOrHash extends StatelessWidget {
|
|||
height: height,
|
||||
child: avatar == null
|
||||
? fallback ?? box
|
||||
: Image.network(
|
||||
avatar.toString(),
|
||||
headers: headers,
|
||||
: Image(
|
||||
image: CachedNetworkImage(
|
||||
avatar!
|
||||
.mxcToHttps(
|
||||
ref.watch(
|
||||
ClientStateController.provider.select(
|
||||
(value) => value?.homeserverUrl,
|
||||
),
|
||||
) ??
|
||||
"",
|
||||
)
|
||||
.toString(),
|
||||
ref.watch(CrossCacheController.provider),
|
||||
headers: ref.headers,
|
||||
),
|
||||
fit: BoxFit.contain,
|
||||
errorBuilder: (_, _, _) => box,
|
||||
),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue