45 lines
1.4 KiB
Dart
45 lines
1.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
import '../../domain/models.dart';
|
|
import '../../state/providers.dart';
|
|
import '../l10n/app_localizations_ext.dart';
|
|
|
|
class StatusBar extends ConsumerWidget {
|
|
const StatusBar({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final l10n = context.l10n;
|
|
final walletState = ref.watch(walletControllerProvider);
|
|
final config = ref.watch(appConfigControllerProvider);
|
|
final syncStatus = walletState.syncStatus;
|
|
|
|
final syncText = walletState.walletInfo == null
|
|
? l10n.syncStatusNone
|
|
: (syncStatus.synced
|
|
? l10n.syncStatusSynced
|
|
: l10n.syncStatusProgress((syncStatus.progress * 100).toStringAsFixed(0)));
|
|
|
|
final nodeText = config.nodeConfig.mode == NodeMode.local
|
|
? l10n.nodeStatusLocal
|
|
: l10n.nodeStatusRemote(config.nodeConfig.activeRemote?.toString() ?? '-');
|
|
|
|
final heightText = l10n.heightStatus(
|
|
syncStatus.nodeHeight.toString(),
|
|
syncStatus.walletHeight.toString(),
|
|
);
|
|
|
|
return Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Text(syncText, style: const TextStyle(fontSize: 12)),
|
|
const SizedBox(height: 4),
|
|
Text(nodeText, style: const TextStyle(fontSize: 12)),
|
|
const SizedBox(height: 4),
|
|
Text(heightText, style: const TextStyle(fontSize: 12)),
|
|
],
|
|
);
|
|
}
|
|
}
|