I have a problem, I'm creating an application where I want to display data from the air condition page, in this case it is "C6H6". When I connected Cubita, the data is not displayed, even the data does not print in the terminal (i.e. the function is not called) I have a problem with finding the error. The C6H6 class has been divided into the following folders:
- cubit : C6H6_cubit : code
import 'package:czestochowa_app/views/aircondition/c6h6/model/c6h6_model.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../repository/c6h6_repository.dart';
import 'enums.dart';
part 'c6h6_state.dart';
class C6H6Cubit extends Cubit<C6H6State> {
C6H6Cubit(this._c6h6Repository) : super(C6H6State(model: null));
final C6H6Repository _c6h6Repository;
Future<void> getC6H6Model() async {
emit(C6H6State(status: Status.loading, model: null));
try {
final getC6H6Model = await _c6h6Repository.fetchData();
emit(
C6H6State(
model: getC6H6Model,
status: Status.success,
),
);
} catch (error) {
emit(
C6H6State(
status: Status.error,
errorMessage: error.toString(),
model: null,
),
);
}
}
}
C6H6_state :
part of 'c6h6_cubit.dart';
class C6H6State {
const C6H6State(
{this.model, this.status = Status.initial, this.errorMessage});
final C6H6model? model;
final Status status;
final String? errorMessage;
}
enums:
enum Status { initial, loading, success, error }
main folder: C6H6homepage :
import 'package:czestochowa_app/resources/colors/colors.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../../widgets/appbars/appbars.dart';
import '../../../../widgets/text_styles.dart';
import '../../../weather/cubit/enums.dart';
import '../cubit/c6h6_cubit.dart';
import '../model/c6h6_model.dart';
import '../repository/c6h6_repository.dart';
class C6H6HomePage1 extends StatefulWidget {
const C6H6HomePage1({
Key? key,
});
@override
State<StatefulWidget> createState() => _C6H6HomePage1();
}
class _C6H6HomePage1 extends State<C6H6HomePage1> {
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => C6H6Cubit(
C6H6Repository(),
),
child: BlocListener<C6H6Cubit, C6H6State>(
listener: (context, state) {
if (state.status == Status.error) {
final errorMessage = state.errorMessage ?? 'Unkown error';
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(errorMessage),
backgroundColor: Colors.red,
),
);
}
},
child: BlocBuilder<C6H6Cubit, C6H6State>(
builder: (context, state) {
final weatherModel = state.model;
return Scaffold(
//appBar: CustomAppbarWeatherScreen(),
body: Center(
child: Builder(builder: (context) {
if (state.status == Status.loading) {
return const Text('Loading');
}
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (weatherModel != null)
_DisplayWeatherWidget(
C6H6Model: weatherModel,
),
],
);
}),
),
);
},
),
),
);
}
}
class _DisplayWeatherWidget extends StatelessWidget {
const _DisplayWeatherWidget({
Key? key,
required this.C6H6Model,
}) : super(key: key);
final C6H6model C6H6Model;
@override
Widget build(BuildContext context) {
return BlocBuilder<C6H6Cubit, C6H6State>(
builder: (context, state) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 20),
child: Column(
children: [
Row(
children: <Widget>[
Text(C6H6Model.value as String,
style: TextStyles.overline(
color: Theme.of(context).colorScheme.fontblacktext,
context: context)),
],
),
const SizedBox(height: 60),
],
),
);
},
);
}
}
Forder model C6H6model :
class C6H6model {
const C6H6model({required this.value});
final double value;
static C6H6model from(json) =>
C6H6model(value: json['value'] != null ? json['value'] : 0);
}
repositories: C6H6_repository :
import 'package:czestochowa_app/views/aircondition/c6h6/model/c6h6_model.dart';
import 'package:dio/dio.dart';
import 'package:get/get.dart';
class C6H6Repository {
final Dio _dio = Dio();
Future<C6H6model?> fetchData() async {
try {
final response = await Dio().get<Map<String, dynamic>>(
'https://api.gios.gov.pl/pjp-api/rest/data/getData/14913');
final responseData = response.data;
print('C6H6:');
print(response.data?['Value'][1]);
final value = (responseData?['values'][1]);
return C6H6model(value: value);
} catch (e) {
print(e.toString());
return null;
}
}
}
Please help why this data is not displayed :(