Skip to content

Instantly share code, notes, and snippets.

abstract class UseCase<Type, Params> {
 Future<Either<Failure, Type>> call(Params params);
}
class GetProfile extends UseCase<MyProfile, NoParams> {
 final ProfileRepository repository;
GetProfile({required this.repository});
@override
@yarn-rp
yarn-rp / .dart
Last active December 29, 2022 18:54
enum OtherCardType { bandec, bpa, metropolitan, unknown }
// First Group
const _cubanStart = r'^92';
const _productName = r'[0-9]{2}';
const _firstGroup = _cubanStart + _productName;
// Second Group
const _bandecSecondGroup = r'0699';
@yarn-rp
yarn-rp / exceptions_example.dart
Last active October 13, 2022 15:45
Cubit handling exceptions vs Cubit handling results
/// Exceptions example
class AppVersioningCubit extends Cubit<AppVersioningState> {
AppVersioningCubit(this.appVersioningService)
: super(const AppVersioningState.initial());
final AppVersioningServiceContract appVersioningService;
/// Calls appVersioningService.getAppVersion to fetch current app version.
/// Then, pass appVersion to validateAppVersionMethod.
Future<void> getAndValidateAppVersion() async {
import 'package:app_version_config_repository/app_version_config_repository.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_boilerplate/core/error/error_messages.dart';
import 'package:flutter_boilerplate/core/error/exceptions.dart';
import 'package:flutter_boilerplate/domain/app_versioning/entities/app_version_entity.dart';
import 'package:flutter_boilerplate/domain/app_versioning/entities/upgrade_information_entity.dart';
import 'package:flutter_boilerplate/domain/app_versioning/results/app_version_result.dart';
import 'package:flutter_boilerplate/domain/app_versioning/results/validate_app_version_result.dart';
import 'package:flutter_boilerplate/domain/app_versioning/service_contracts/app_versioning_service_contract.dart';
import 'package:injectable/injectable.dart';
import 'package:app_version_config_repository/app_version_config_repository.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_boilerplate/core/error/error_messages.dart';
import 'package:flutter_boilerplate/core/error/exceptions.dart';
import 'package:flutter_boilerplate/domain/app_versioning/entities/app_version_entity.dart';
import 'package:flutter_boilerplate/domain/app_versioning/entities/upgrade_information_entity.dart';
import 'package:flutter_boilerplate/domain/app_versioning/results/app_version_result.dart';
import 'package:flutter_boilerplate/domain/app_versioning/results/validate_app_version_result.dart';
import 'package:flutter_boilerplate/domain/app_versioning/service_contracts/app_versioning_service_contract.dart';
import 'package:injectable/injectable.dart';
import 'dart:async';
import 'package:flutter_boilerplate/core/env/app_environment.dart';
import 'package:flutter_boilerplate/injection_container/domain/config_domain.config.dart';
import 'package:get_it/get_it.dart';
import 'package:injectable/injectable.dart';
@InjectableInit(
generateForDir: ['lib/domain'],
preferRelativeImports: false,
// GENERATED CODE - DO NOT MODIFY BY HAND
// **************************************************************************
// InjectableConfigGenerator
// **************************************************************************
// ignore_for_file: no_leading_underscores_for_library_prefixes
import 'package:app_version_config_repository/app_version_config_repository.dart'
as _i7;
import 'package:flutter_boilerplate/domain/app_versioning/service_contracts/app_versioning_service_contract.dart'
@yarn-rp
yarn-rp / env.dart
Last active October 21, 2022 22:01
import 'package:injectable/injectable.dart';
/// {@template app_environment}
/// Use [AppEnvironment] to provide/access some information about the Environment app is
/// running.
///
/// Access [AppEnvironment] name with the [name] property.
///
/// Currently has supported 3 environments:
/// 1. [AppEnvironment.development] : Use it for develop dependencies. This is
class NewIntCaseWidget extends CaseWidget<int> {
NewIntCaseWidget({
super.key,
required int super.value,
}) {
onEquals(0, (value, context) => Text('Value is zero'));
onEquals(1, (value, context) => Text('Value is 1'));
onLessThan(1, (value, context) => Text('Value is less than 1'));
onGreaterThan(1, (value, context) => Text('Value is greater than 1'));
Widget _kDefaultWidget<T>(T value, BuildContext _) => Text('Error.');
typedef BuilderFunction<T> = Widget Function(T value, BuildContext context);
typedef ListenerFunction<T> = void Function(T value, BuildContext context);
class MatchCase<Q> {
MatchCase(
this.matcher,
this.builder,