mudular code ready to fork

This commit is contained in:
gitea
2025-11-08 12:54:40 +01:00
parent 5f8d8330f5
commit 8c6bf598f5
21 changed files with 288 additions and 519 deletions
+50 -40
View File
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import '../../core/service_locator.dart';
import '../../data/firebase/firebase_service.dart';
import '../../data/nostr/nostr_service.dart';
import '../../data/sync/sync_engine.dart';
@@ -7,16 +8,7 @@ import '../relay_management/relay_management_controller.dart';
/// Settings screen (placeholder).
class SettingsScreen extends StatelessWidget {
final FirebaseService? firebaseService;
final NostrService? nostrService;
final SyncEngine? syncEngine;
const SettingsScreen({
super.key,
this.firebaseService,
this.nostrService,
this.syncEngine,
});
const SettingsScreen({super.key});
@override
Widget build(BuildContext context) {
@@ -26,38 +18,56 @@ class SettingsScreen extends StatelessWidget {
),
body: ListView(
children: [
if (firebaseService != null)
SwitchListTile(
title: const Text('Firebase Enabled'),
subtitle: Text(
firebaseService!.isEnabled
? 'Firebase services are active'
: 'Firebase services are disabled',
),
value: firebaseService!.isEnabled,
onChanged: null, // Read-only for now
),
if (nostrService != null && syncEngine != null) ...[
const Divider(),
ListTile(
leading: const Icon(Icons.cloud),
title: const Text('Relay Management'),
subtitle: const Text('Manage Nostr relays'),
trailing: const Icon(Icons.chevron_right),
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => RelayManagementScreen(
controller: RelayManagementController(
nostrService: nostrService!,
syncEngine: syncEngine!,
),
),
Builder(
builder: (context) {
final firebaseService = ServiceLocator.instance.firebaseService;
if (firebaseService != null) {
return SwitchListTile(
title: const Text('Firebase Enabled'),
subtitle: Text(
firebaseService.isEnabled
? 'Firebase services are active'
: 'Firebase services are disabled',
),
value: firebaseService.isEnabled,
onChanged: null, // Read-only for now
);
},
),
],
}
return const SizedBox.shrink();
},
),
Builder(
builder: (context) {
final nostrService = ServiceLocator.instance.nostrService;
final syncEngine = ServiceLocator.instance.syncEngine;
if (nostrService != null && syncEngine != null) {
return Column(
children: [
const Divider(),
ListTile(
leading: const Icon(Icons.cloud),
title: const Text('Relay Management'),
subtitle: const Text('Manage Nostr relays'),
trailing: const Icon(Icons.chevron_right),
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => RelayManagementScreen(
controller: RelayManagementController(
nostrService: nostrService,
syncEngine: syncEngine,
),
),
),
);
},
),
],
);
}
return const SizedBox.shrink();
},
),
const Divider(),
const ListTile(
leading: Icon(Icons.info_outline),