fix(bugs): update message when in progress

This commit is contained in:
anhtunz
2025-02-11 11:51:58 +07:00
parent bcf205f171
commit a98e84880b
2 changed files with 69 additions and 47 deletions

View File

@@ -4,6 +4,7 @@ import 'dart:developer';
import 'package:sfm_app/feature/devices/device_model.dart'; import 'package:sfm_app/feature/devices/device_model.dart';
import 'package:sfm_app/product/base/bloc/base_bloc.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/services/api_services.dart';
import 'package:sfm_app/product/utils/date_time_utils.dart'; import 'package:sfm_app/product/utils/date_time_utils.dart';
@@ -28,6 +29,10 @@ class DeviceLogsBloc extends BlocBase {
StreamSink<List<SensorLogs>> get sinkSensors => sensors.sink; StreamSink<List<SensorLogs>> get sinkSensors => sensors.sink;
Stream<List<SensorLogs>> get streamSensors => sensors.stream; Stream<List<SensorLogs>> get streamSensors => sensors.stream;
final message = StreamController<String>.broadcast();
StreamSink<String> get sinkmessage => message.sink;
Stream<String> get streammessage => message.stream;
@override @override
void dispose() {} void dispose() {}
@@ -49,11 +54,10 @@ class DeviceLogsBloc extends BlocBase {
DateTime fromDate, DateTime fromDate,
List<SensorLogs> sensors, List<SensorLogs> sensors,
) async { ) async {
log("SensorLength: ${sensors.length}"); sinkmessage.add(ApplicationConstants.LOADING);
String fromDateString = String fromDateString =
DateTimeUtils.instance.formatDateTimeToString(fromDate); DateTimeUtils.instance.formatDateTimeToString(fromDate);
String now = DateTimeUtils.instance.formatDateTimeToString(DateTime.now()); String now = DateTimeUtils.instance.formatDateTimeToString(DateTime.now());
// List<SensorLogs> sensors = [];
Map<String, dynamic> params = { Map<String, dynamic> params = {
'thing_id': thingID, 'thing_id': thingID,
'from': fromDateString, 'from': fromDateString,
@@ -74,8 +78,9 @@ class DeviceLogsBloc extends BlocBase {
for (var sensor in devicesListLog.sensors!) { for (var sensor in devicesListLog.sensors!) {
sensors.add(sensor); sensors.add(sensor);
} }
} else {
sinkmessage.add(ApplicationConstants.NO_DATA);
} }
sinkSensors.add(sensors); sinkSensors.add(sensors);
} }
} }

View File

@@ -3,6 +3,7 @@ import 'dart:developer';
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:sfm_app/product/constant/app/app_constants.dart';
import 'widgets/tag_widget.dart'; import 'widgets/tag_widget.dart';
import '../devices/device_model.dart'; import '../devices/device_model.dart';
import '../../bloc/device_logs_bloc.dart'; import '../../bloc/device_logs_bloc.dart';
@@ -116,9 +117,7 @@ class _DeviceLogsScreenState extends State<DeviceLogsScreen> {
thingID = value!; thingID = value!;
setState(() {}); setState(() {});
}, },
onSaved: (value) { onSaved: (value) {},
log("On Saved");
},
iconStyleData: const IconStyleData( iconStyleData: const IconStyleData(
icon: Icon( icon: Icon(
Icons.arrow_drop_down, Icons.arrow_drop_down,
@@ -217,47 +216,56 @@ class _DeviceLogsScreenState extends State<DeviceLogsScreen> {
height: context.lowValue, height: context.lowValue,
), ),
Expanded( Expanded(
child: sensorsSnapshot.data?.isEmpty ?? false child: (() {
? Center( if (sensorsSnapshot.data?.isEmpty ?? false) {
child: Text(appLocalization(context) return StreamBuilder<String>(
.no_data_message), stream: deviceLogsBloc.streammessage,
) builder: (context, messageSnapshot) {
: RefreshIndicator( return Center(
onRefresh: refresh, child: Text(getMessageData(
child: ListView.builder( messageSnapshot.data ?? '',
controller: controller, )),
itemCount: );
sensorsSnapshot.data!.length + 1, },
itemBuilder: (context, index) { );
if (index < } else {
sensorsSnapshot.data!.length) { return RefreshIndicator(
return logDetail( onRefresh: refresh,
sensorsSnapshot.data![index], child: ListView.builder(
index, controller: controller,
); itemCount: sensorsSnapshot.data!.length + 1,
} else { itemBuilder: (context, index) {
return Padding( if (index <
padding: context.paddingLow, sensorsSnapshot.data!.length) {
child: StreamBuilder<bool>( return logDetail(
stream: sensorsSnapshot.data![index],
deviceLogsBloc.streamHasMore, index,
builder: );
(context, hasMoreSnapshot) { } else {
return Center( return Padding(
child: hasMoreSnapshot.data ?? padding: context.paddingLow,
hasMore child: StreamBuilder<bool>(
? const CircularProgressIndicator() stream:
: Text(appLocalization( deviceLogsBloc.streamHasMore,
context) builder:
.main_no_data), (context, hasMoreSnapshot) {
); return Center(
}, child: hasMoreSnapshot.data ??
), hasMore
); ? const CircularProgressIndicator()
} : Text(
}, appLocalization(context)
), .main_no_data),
);
},
),
);
}
},
), ),
);
}
})(),
), ),
], ],
), ),
@@ -272,13 +280,22 @@ class _DeviceLogsScreenState extends State<DeviceLogsScreen> {
); );
} }
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) { Widget logDetail(SensorLogs sensor, int index) {
return Column( return Column(
children: [ children: [
ListTile( ListTile(
subtitle: subtitle:
Text(DeviceUtils.instance.getDeviceSensorsLog(context, sensor)), Text(DeviceUtils.instance.getDeviceSensorsLog(context, sensor)),
// leading: leadingList(sensor),
title: Text( title: Text(
DateTimeUtils.instance DateTimeUtils.instance
.convertCurrentMillisToDateTimeString(sensor.time ?? 0), .convertCurrentMillisToDateTimeString(sensor.time ?? 0),