mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-11-27 12:14:55 +00:00
46 lines
1.6 KiB
Dart
46 lines
1.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart';
|
|
import 'package:syncrow_app/features/devices/model/device_model.dart';
|
|
import 'package:syncrow_app/features/devices/model/room_model.dart';
|
|
import 'package:syncrow_app/features/devices/view/widgets/room_page_switch.dart';
|
|
import 'package:syncrow_app/utils/resource_manager/constants.dart';
|
|
|
|
class RoomPage extends StatelessWidget {
|
|
const RoomPage({super.key, required this.room});
|
|
|
|
final RoomModel room;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
List<DeviceModel> devices = [];
|
|
for (var category in room.categories ?? []) {
|
|
devices.addAll(category.devices);
|
|
}
|
|
return Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: Constants.defaultPadding),
|
|
child: SingleChildScrollView(
|
|
child: BlocBuilder<DevicesCubit, DevicesState>(
|
|
builder: (context, state) {
|
|
return GridView.builder(
|
|
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
|
crossAxisCount: 2,
|
|
crossAxisSpacing: 10,
|
|
mainAxisSpacing: 10,
|
|
childAspectRatio: 1.5,
|
|
),
|
|
padding: const EdgeInsets.only(top: 10),
|
|
physics: const NeverScrollableScrollPhysics(),
|
|
shrinkWrap: true,
|
|
itemCount: devices.length,
|
|
itemBuilder: (_, index) {
|
|
return RoomPageSwitch(device: devices[index]);
|
|
},
|
|
);
|
|
},
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|