build method
dynamic
build( - dynamic context,
- dynamic ref
)
Implementation
@override
Widget build(BuildContext context, WidgetRef ref) {
bool isVerified = deviceRecord.isVerified();
final fields = [
isVerified ? L10n.of(context).verified : L10n.of(context).unverified,
];
final lastSeenTs = deviceRecord.lastSeenTs();
if (lastSeenTs != null) {
final dateTime = DateTime.fromMillisecondsSinceEpoch(
lastSeenTs,
isUtc: true,
);
fields.add(dateTime.toLocal().toString());
}
final lastSeenIp = deviceRecord.lastSeenIp();
if (lastSeenIp != null) {
fields.add(lastSeenIp);
}
fields.add(deviceRecord.deviceId().toString());
return Card(
margin: const EdgeInsets.symmetric(vertical: 2, horizontal: 15),
child: ListTile(
leading: isVerified
? Icon(
Atlas.check_shield_thin,
color: Theme.of(context).colorScheme.success,
)
: Icon(
Atlas.xmark_shield_thin,
color: Theme.of(context).colorScheme.error,
),
title: Text(deviceRecord.displayName() ?? ''),
subtitle: Breadcrumbs(
crumbs: fields.map((e) => TextSpan(text: e)).toList(),
separator: ' - ',
),
trailing: PopupMenuButton(
itemBuilder: (BuildContext context) => <PopupMenuEntry>[
PopupMenuItem(
onTap: () async => await onLogout(context, ref),
child: Row(
children: [
const Icon(Atlas.exit_thin),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 5),
child: Text(
L10n.of(context).logOut,
style: Theme.of(context).textTheme.labelSmall,
softWrap: false,
),
),
],
),
),
PopupMenuItem(
onTap: () async => await onVerify(context, ref),
child: Row(
children: [
const Icon(Atlas.shield_exclamation_thin),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 5),
child: Text(
L10n.of(context).verifySession,
style: Theme.of(context).textTheme.labelSmall,
softWrap: false,
),
),
],
),
),
],
),
),
);
}