diff --git a/lib/bloc/device_logs_bloc.dart b/lib/bloc/device_logs_bloc.dart index 4e9a799..cc78b3d 100644 --- a/lib/bloc/device_logs_bloc.dart +++ b/lib/bloc/device_logs_bloc.dart @@ -4,6 +4,7 @@ import 'dart:developer'; import 'package:sfm_app/feature/devices/device_model.dart'; import 'package:sfm_app/product/base/bloc/base_bloc.dart'; +import 'package:sfm_app/product/constant/app/app_constants.dart'; import 'package:sfm_app/product/services/api_services.dart'; import 'package:sfm_app/product/utils/date_time_utils.dart'; @@ -28,6 +29,10 @@ class DeviceLogsBloc extends BlocBase { StreamSink> get sinkSensors => sensors.sink; Stream> get streamSensors => sensors.stream; + final message = StreamController.broadcast(); + StreamSink get sinkmessage => message.sink; + Stream get streammessage => message.stream; + @override void dispose() {} @@ -49,11 +54,10 @@ class DeviceLogsBloc extends BlocBase { DateTime fromDate, List sensors, ) async { - log("SensorLength: ${sensors.length}"); + sinkmessage.add(ApplicationConstants.LOADING); String fromDateString = DateTimeUtils.instance.formatDateTimeToString(fromDate); String now = DateTimeUtils.instance.formatDateTimeToString(DateTime.now()); - // List sensors = []; Map params = { 'thing_id': thingID, 'from': fromDateString, @@ -74,8 +78,9 @@ class DeviceLogsBloc extends BlocBase { for (var sensor in devicesListLog.sensors!) { sensors.add(sensor); } + } else { + sinkmessage.add(ApplicationConstants.NO_DATA); } - sinkSensors.add(sensors); } } diff --git a/lib/feature/device_log/device_logs_screen.dart b/lib/feature/device_log/device_logs_screen.dart index 9fa0a87..b93e2cd 100644 --- a/lib/feature/device_log/device_logs_screen.dart +++ b/lib/feature/device_log/device_logs_screen.dart @@ -3,6 +3,7 @@ import 'dart:developer'; import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +import 'package:sfm_app/product/constant/app/app_constants.dart'; import 'widgets/tag_widget.dart'; import '../devices/device_model.dart'; import '../../bloc/device_logs_bloc.dart'; @@ -116,9 +117,7 @@ class _DeviceLogsScreenState extends State { thingID = value!; setState(() {}); }, - onSaved: (value) { - log("On Saved"); - }, + onSaved: (value) {}, iconStyleData: const IconStyleData( icon: Icon( Icons.arrow_drop_down, @@ -217,47 +216,56 @@ class _DeviceLogsScreenState extends State { height: context.lowValue, ), Expanded( - child: sensorsSnapshot.data?.isEmpty ?? false - ? Center( - child: Text(appLocalization(context) - .no_data_message), - ) - : RefreshIndicator( - onRefresh: refresh, - child: ListView.builder( - controller: controller, - itemCount: - sensorsSnapshot.data!.length + 1, - itemBuilder: (context, index) { - if (index < - sensorsSnapshot.data!.length) { - return logDetail( - sensorsSnapshot.data![index], - index, - ); - } else { - return Padding( - padding: context.paddingLow, - child: StreamBuilder( - stream: - deviceLogsBloc.streamHasMore, - builder: - (context, hasMoreSnapshot) { - return Center( - child: hasMoreSnapshot.data ?? - hasMore - ? const CircularProgressIndicator() - : Text(appLocalization( - context) - .main_no_data), - ); - }, - ), - ); - } - }, - ), + child: (() { + if (sensorsSnapshot.data?.isEmpty ?? false) { + return StreamBuilder( + stream: deviceLogsBloc.streammessage, + builder: (context, messageSnapshot) { + return Center( + child: Text(getMessageData( + messageSnapshot.data ?? '', + )), + ); + }, + ); + } else { + return RefreshIndicator( + onRefresh: refresh, + child: ListView.builder( + controller: controller, + itemCount: sensorsSnapshot.data!.length + 1, + itemBuilder: (context, index) { + if (index < + sensorsSnapshot.data!.length) { + return logDetail( + sensorsSnapshot.data![index], + index, + ); + } else { + return Padding( + padding: context.paddingLow, + child: StreamBuilder( + stream: + deviceLogsBloc.streamHasMore, + builder: + (context, hasMoreSnapshot) { + return Center( + child: hasMoreSnapshot.data ?? + hasMore + ? const CircularProgressIndicator() + : Text( + appLocalization(context) + .main_no_data), + ); + }, + ), + ); + } + }, ), + ); + } + })(), ), ], ), @@ -272,13 +280,22 @@ class _DeviceLogsScreenState extends State { ); } + String getMessageData(String data) { + if (data == ApplicationConstants.LOADING) { + return appLocalization(context).loading_message; + } else if (data == ApplicationConstants.NO_DATA) { + return appLocalization(context).main_no_data; + } else { + return appLocalization(context).no_data_message; + } + } + Widget logDetail(SensorLogs sensor, int index) { return Column( children: [ ListTile( subtitle: Text(DeviceUtils.instance.getDeviceSensorsLog(context, sensor)), - // leading: leadingList(sensor), title: Text( DateTimeUtils.instance .convertCurrentMillisToDateTimeString(sensor.time ?? 0),