1

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 :(

Grzegorz
  • 11
  • 2

0 Answers0