Files
mirror-os-flutter/apps/display/lib/providers/layout_provider.dart
T
2026-07-11 21:51:34 -05:00

28 lines
845 B
Dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:mirror_protocol/mirror_protocol.dart';
import '../services/layout_persistence.dart';
import '../services/ws_server.dart';
final layoutProvider =
AsyncNotifierProvider<LayoutNotifier, DashboardLayoutConfig>(
LayoutNotifier.new);
class LayoutNotifier extends AsyncNotifier<DashboardLayoutConfig> {
late final LayoutPersistence _persistence;
@override
Future<DashboardLayoutConfig> build() async {
_persistence = LayoutPersistence();
return _persistence.load();
}
Future<void> updateLayout(DashboardLayoutConfig config) async {
state = AsyncData(config);
await _persistence.save(config);
// Broadcast to connected clients
ref
.read(wsServerProvider)
.broadcast(DashboardConfigResponse(layout: config));
}
}