Skip to content

Commit

Permalink
change whole project logic
Browse files Browse the repository at this point in the history
  • Loading branch information
SepehrFakoori committed Jul 9, 2024
1 parent d4c710d commit 189fa35
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 15 deletions.
2 changes: 1 addition & 1 deletion lib/bloc/crypto/crypto_bloc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
class CryptoBloc extends Bloc<CryptoEvent, CryptoState> {
final ICryptoCurrencyRepository _repository;
CryptoBloc(this._repository) : super(CryptoInitState()) {
on<CryptoInitializeEvent>((event, state) async {
on<CryptoInitializeEvent>((event, emit) async {
emit(CryptoLoadingState());
final response = await _repository.getCryptoCurrencies();
emit(CryptoResponseState(response));
Expand Down
17 changes: 11 additions & 6 deletions lib/data/datasource/crypto_currency_datasource.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:currency_exchange_rate_app_flutter/data/model/crypto_currency.dart';
import 'package:currency_exchange_rate_app_flutter/di/di.dart';
import 'package:currency_exchange_rate_app_flutter/util/api_exception.dart';
import 'package:dio/dio.dart';

abstract class ICryptoCurrencyDataSource {
Expand All @@ -15,12 +16,16 @@ class CryptoCurrencyRemoteDatasource extends ICryptoCurrencyDataSource {
Map<String, dynamic> qParams = {
"token": "440714:668d2eb4c7b96",
};
var response = await _dio.get(
"DigitalCurrency/", queryParameters: qParams);
return response.data["result"].map<CryptoCurrency>((jsonObject) =>
CryptoCurrency.fromMapJson(jsonObject)).toList();
var response =
await _dio.get("DigitalCurrency/", queryParameters: qParams);
return response.data["result"]
.map<CryptoCurrency>(
(jsonObject) => CryptoCurrency.fromMapJson(jsonObject))
.toList();
} on DioException catch (ex) {
throw ApiException(ex.response!.statusCode, ex.response!.statusMessage);
} catch (ex) {
throw Exception();
throw ApiException(0, "Unknown Error!");
}
}
}
}
8 changes: 4 additions & 4 deletions lib/data/repository/crypto_currency_repository.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:currency_exchange_rate_app_flutter/data/datasource/crypto_currency_datasource.dart';
import 'package:currency_exchange_rate_app_flutter/data/model/crypto_currency.dart';
import 'package:currency_exchange_rate_app_flutter/util/api_exception.dart';
import 'package:dartz/dartz.dart';

import '../../di/di.dart';
Expand All @@ -16,9 +17,8 @@ class CryptoCurrencyRepository extends ICryptoCurrencyRepository {
try {
var response = await _dataSource.getCryptoCurrencies();
return right(response);

} on Exception catch (ex) {
return left(ex.toString());
} on ApiException catch (ex) {
return left(ex.message ?? "Text Error We Got!");
}
}
}
}
2 changes: 2 additions & 0 deletions lib/di/di.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:currency_exchange_rate_app_flutter/data/datasource/crypto_currency_datasource.dart';
import 'package:currency_exchange_rate_app_flutter/data/repository/crypto_currency_repository.dart';
import 'package:dio/dio.dart';
import 'package:get_it/get_it.dart';

Expand All @@ -7,4 +8,5 @@ var locator = GetIt.instance;
Future<void> getItInit() async {
locator.registerSingleton<Dio>(Dio(BaseOptions(baseUrl: "https://one-api.ir/")));
locator.registerSingleton<ICryptoCurrencyDataSource>(CryptoCurrencyRemoteDatasource());
locator.registerSingleton<ICryptoCurrencyRepository>(CryptoCurrencyRepository());
}
1 change: 0 additions & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'package:currency_exchange_rate_app_flutter/constants/app_colors.dart';
import 'package:currency_exchange_rate_app_flutter/di/di.dart';
import 'package:currency_exchange_rate_app_flutter/screens/home_screen.dart';
import 'package:currency_exchange_rate_app_flutter/screens/splash_screen.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';

Expand Down
11 changes: 10 additions & 1 deletion lib/screens/splash_screen.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
import 'package:currency_exchange_rate_app_flutter/bloc/crypto/crypto_bloc.dart';
import 'package:currency_exchange_rate_app_flutter/bloc/crypto/crypto_event.dart';
import 'package:currency_exchange_rate_app_flutter/constants/app_colors.dart';
import 'package:currency_exchange_rate_app_flutter/screens/home_screen.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:lottie/lottie.dart';

class SplashScreen extends StatelessWidget {
class SplashScreen extends StatefulWidget {
const SplashScreen({super.key});

@override
State<SplashScreen> createState() => _SplashScreenState();
}

class _SplashScreenState extends State<SplashScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
Expand Down
6 changes: 6 additions & 0 deletions lib/util/api_exception.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class ApiException implements Exception {
int? code;
String? message;

ApiException(this.code, this.message);
}
4 changes: 2 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ dependencies:
dio: ^5.5.0+1
get_it: ^7.7.0
dartz: ^0.10.1
bloc: ^8.1.4
flutter_bloc: ^8.1.6
bloc: ^8.1.0
flutter_bloc: ^8.1.1


dev_dependencies:
Expand Down

0 comments on commit 189fa35

Please sign in to comment.