feat: type remote device models

This commit is contained in:
Artem Kokos
2026-04-23 20:44:51 +07:00
parent 736a61d54b
commit fa403bfcce
9 changed files with 619 additions and 189 deletions

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../app/error_message.dart';
import '../models/ignis_group.dart';
import '../providers/providers.dart';
import '../widgets/group_card.dart';
import 'homes_screen.dart';
@@ -175,9 +176,9 @@ class _RemoteScreenState extends ConsumerState<RemoteScreen> {
padding: const EdgeInsets.only(top: 8, bottom: 80),
itemCount: groups.length,
itemBuilder: (context, index) {
final g = Map<String, dynamic>.from(groups[index]);
final g = groups[index];
return Dismissible(
key: Key(g['id'].toString()),
key: Key(g.id),
direction: DismissDirection.endToStart,
background: Container(
alignment: Alignment.centerRight,
@@ -203,7 +204,7 @@ class _RemoteScreenState extends ConsumerState<RemoteScreen> {
Future<bool> _confirmAndDeleteGroup(
BuildContext context,
Map<String, dynamic> g,
IgnisGroup g,
) async {
final messenger = ScaffoldMessenger.of(context);
final confirmed =
@@ -211,7 +212,7 @@ class _RemoteScreenState extends ConsumerState<RemoteScreen> {
context: context,
builder: (ctx) => AlertDialog(
title: const Text('Удалить группу?'),
content: Text('Удалить "${g['name']}"?'),
content: Text('Удалить "${g.name}"?'),
actions: [
TextButton(
onPressed: () => Navigator.of(ctx).pop(false),
@@ -232,7 +233,7 @@ class _RemoteScreenState extends ConsumerState<RemoteScreen> {
if (!confirmed) return false;
try {
await ref.read(apiProvider).deleteGroup(g['id'].toString());
await ref.read(apiProvider).deleteGroup(g.id);
await ref.read(groupsProvider.notifier).refresh();
return true;
} catch (e) {