Skip to content

Instantly share code, notes, and snippets.

View AbedElazizShe's full-sized avatar

Abed Elaziz Shehadeh AbedElazizShe

  • SICPA
  • Cyberjaya, Malaysia
View GitHub Profile
@AbedElazizShe
AbedElazizShe / main.dart
Created July 14, 2022 18:30
Core main is the entry point
/// Custom main points to Core main
import 'package:core/main.dart' as entry;
import 'config/custom_configuration.dart';
void main() => entry.main(configuration: CustomConfiguration());
/// Core main
Future<void> main({AppConfiguration? configuration}) async {
final AppConfiguration config = configuration ?? DefaultConfiguration();
@AbedElazizShe
AbedElazizShe / custom_configuration.dart
Created July 14, 2022 18:25
Configuration Implementation
class CustomConfiguration extends AppConfiguration {
@override
String endpoint() => 'https://api.nytimes.com/svc/';
@override
ThemeData theme() {
const colorScheme = ColorScheme.light(
primary: Colors.cyan,
primaryContainer: Color(0xffcccccc),
onPrimary: Colors.black54,
@AbedElazizShe
AbedElazizShe / config.dart
Last active July 14, 2022 18:20
General configuration
import 'package:flutter/material.dart';
import 'package:get_localization/get_localization.dart';
import 'base_localisation.dart';
/// General Configurations
abstract class AppConfiguration {
String endpoint();
ThemeData theme();
BlocBuilder<ArticlesCubit, ArticlesState>(
bloc: _articlesCubit,
builder: (BuildContext context, ArticlesState state) {
if (state is ArticlesLoadingState) {
return const Center(child: CircularProgressIndicator());
} else if (state is ArticlesLoadedState) {
// Load articles
}
}
)
import 'package:bloc/bloc.dart';
import 'package:domain/domain.dart';
import 'package:flutter_clean_architecture/core/enums.dart';
import 'package:get_it/get_it.dart';
import 'articles_state.dart';
class ArticlesCubit extends Cubit<ArticlesState> {
ArticlesCubit() : super(const ArticlesInitialState());
import 'package:cache/cache.dart';
import 'package:cache/src/db_provider.dart';
import 'package:cache/src/mapper/articles_entity_mapper.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'cache_storage_repository_impl_test.mocks.dart';
import 'mock/mock_article_entity.dart';
import 'dart:convert';
import 'package:cache/src/db_provider.dart';
import 'package:cache/src/mapper/articles_entity_mapper.dart';
import 'package:cache/src/models/article_model.dart';
import 'package:data/data.dart';
import 'package:injectable/injectable.dart';
@Injectable(as: CacheStorageRepository)
class CacheStorageRepositoryImpl implements CacheStorageRepository {
import 'package:data/data.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:remote/remote.dart';
import 'package:remote/src/models/article/articles_response_model.dart';
import '../mock/mock_articles_model.dart';
import 'articles_remote_repository_impl_test.mocks.dart';
import 'package:data/data.dart';
import 'package:injectable/injectable.dart';
import 'package:remote/src/api/articles_service.dart';
import 'package:remote/src/mapper/articles_entity_mapper.dart';
import 'package:remote/src/models/article/article_model.dart';
import 'package:remote/src/models/article/articles_response_model.dart';
@Injectable(as: ArticlesRemoteRepository)
class ArticlesRemoteRepositoryImpl extends ArticlesRemoteRepository {
ArticlesRemoteRepositoryImpl({
import 'package:data/data.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import '../../mock/mock_article_entity.dart';
import 'remote_data_source_test.mocks.dart';
@GenerateMocks([
ArticlesRemoteRepository,