import 'package:farm_tpf/data/repository/repository.dart'; import 'package:farm_tpf/presentation/custom_widgets/widget_search.dart'; import 'package:farm_tpf/presentation/screens/control_device/widget_device_list.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'bloc/device_bloc.dart'; class ControlDeviceScreen extends StatefulWidget { @override _ControlDeviceScreenState createState() => _ControlDeviceScreenState(); } class _ControlDeviceScreenState extends State { BuildContext _blocContext; DeviceBloc _deviceBloc = DeviceBloc(repository: Repository()); @override void initState() { super.initState(); _deviceBloc.add(OpenScreen()); } @override Widget build(BuildContext context) { _blocContext = context; return Scaffold( appBar: AppBar( centerTitle: true, title: Text("Điều khiển thiết bị"), ), body: BlocProvider( create: (context) => DeviceBloc(repository: Repository())..add(OpenScreen()), child: _buildContent())); } Widget _buildContent() { return Column( children: [ SearchWidget(searchPressed: (value) { FocusScope.of(context).requestFocus(FocusNode()); _deviceBloc.add(OnSearch(query: value)); }), Expanded( child: BlocBuilder( cubit: _deviceBloc, builder: (context, state) { if (state is DisplayDevice) { if (state.loading) { return Container( child: Center( child: CircularProgressIndicator(), ), ); } if (state.devices != null) { return Container( child: WidgetDeviceList( devices: state.devices, deviceBloc: _deviceBloc, ), ); } return Container(); } else { return Container(); } }, )) ], ); } }