sample project
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
/// Providers: Sample Project
|
||||
///
|
||||
/// Riverpod providers for managing sample/model house projects state.
|
||||
library;
|
||||
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:worker/core/network/dio_client.dart';
|
||||
import 'package:worker/features/showrooms/data/datasources/sample_project_remote_datasource.dart';
|
||||
import 'package:worker/features/showrooms/data/repositories/sample_project_repository_impl.dart';
|
||||
import 'package:worker/features/showrooms/domain/entities/sample_project.dart';
|
||||
import 'package:worker/features/showrooms/domain/repositories/sample_project_repository.dart';
|
||||
|
||||
part 'sample_project_provider.g.dart';
|
||||
|
||||
/// Sample Project Remote Data Source Provider
|
||||
@riverpod
|
||||
Future<SampleProjectRemoteDataSource> sampleProjectRemoteDataSource(Ref ref) async {
|
||||
final dioClient = await ref.watch(dioClientProvider.future);
|
||||
return SampleProjectRemoteDataSourceImpl(dioClient);
|
||||
}
|
||||
|
||||
/// Sample Project Repository Provider
|
||||
@riverpod
|
||||
Future<SampleProjectRepository> sampleProjectRepository(Ref ref) async {
|
||||
final remoteDataSource = await ref.watch(sampleProjectRemoteDataSourceProvider.future);
|
||||
return SampleProjectRepositoryImpl(remoteDataSource);
|
||||
}
|
||||
|
||||
/// Sample Projects List Provider
|
||||
///
|
||||
/// Fetches and manages sample/model house projects from API.
|
||||
@riverpod
|
||||
class SampleProjectsList extends _$SampleProjectsList {
|
||||
@override
|
||||
Future<List<SampleProject>> build() async {
|
||||
final repository = await ref.watch(sampleProjectRepositoryProvider.future);
|
||||
return repository.getSampleProjects();
|
||||
}
|
||||
|
||||
/// Refresh sample projects from remote
|
||||
Future<void> refresh() async {
|
||||
state = const AsyncValue.loading();
|
||||
state = await AsyncValue.guard(() async {
|
||||
final repository = await ref.read(sampleProjectRepositoryProvider.future);
|
||||
return repository.getSampleProjects();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/// Sample Project Detail Provider
|
||||
///
|
||||
/// Fetches detail of a specific sample project by name.
|
||||
/// Uses family modifier to cache by project name.
|
||||
@riverpod
|
||||
Future<SampleProject> sampleProjectDetail(Ref ref, String name) async {
|
||||
final repository = await ref.watch(sampleProjectRepositoryProvider.future);
|
||||
return repository.getSampleProjectDetail(name);
|
||||
}
|
||||
@@ -0,0 +1,266 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'sample_project_provider.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
/// Sample Project Remote Data Source Provider
|
||||
|
||||
@ProviderFor(sampleProjectRemoteDataSource)
|
||||
const sampleProjectRemoteDataSourceProvider =
|
||||
SampleProjectRemoteDataSourceProvider._();
|
||||
|
||||
/// Sample Project Remote Data Source Provider
|
||||
|
||||
final class SampleProjectRemoteDataSourceProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<SampleProjectRemoteDataSource>,
|
||||
SampleProjectRemoteDataSource,
|
||||
FutureOr<SampleProjectRemoteDataSource>
|
||||
>
|
||||
with
|
||||
$FutureModifier<SampleProjectRemoteDataSource>,
|
||||
$FutureProvider<SampleProjectRemoteDataSource> {
|
||||
/// Sample Project Remote Data Source Provider
|
||||
const SampleProjectRemoteDataSourceProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'sampleProjectRemoteDataSourceProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$sampleProjectRemoteDataSourceHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<SampleProjectRemoteDataSource> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<SampleProjectRemoteDataSource> create(Ref ref) {
|
||||
return sampleProjectRemoteDataSource(ref);
|
||||
}
|
||||
}
|
||||
|
||||
String _$sampleProjectRemoteDataSourceHash() =>
|
||||
r'551677016d2d5d5185537f4871b161456370158e';
|
||||
|
||||
/// Sample Project Repository Provider
|
||||
|
||||
@ProviderFor(sampleProjectRepository)
|
||||
const sampleProjectRepositoryProvider = SampleProjectRepositoryProvider._();
|
||||
|
||||
/// Sample Project Repository Provider
|
||||
|
||||
final class SampleProjectRepositoryProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<SampleProjectRepository>,
|
||||
SampleProjectRepository,
|
||||
FutureOr<SampleProjectRepository>
|
||||
>
|
||||
with
|
||||
$FutureModifier<SampleProjectRepository>,
|
||||
$FutureProvider<SampleProjectRepository> {
|
||||
/// Sample Project Repository Provider
|
||||
const SampleProjectRepositoryProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'sampleProjectRepositoryProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$sampleProjectRepositoryHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<SampleProjectRepository> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<SampleProjectRepository> create(Ref ref) {
|
||||
return sampleProjectRepository(ref);
|
||||
}
|
||||
}
|
||||
|
||||
String _$sampleProjectRepositoryHash() =>
|
||||
r'a675cd70c32a2d9331992a1db3d5646a38e0c953';
|
||||
|
||||
/// Sample Projects List Provider
|
||||
///
|
||||
/// Fetches and manages sample/model house projects from API.
|
||||
|
||||
@ProviderFor(SampleProjectsList)
|
||||
const sampleProjectsListProvider = SampleProjectsListProvider._();
|
||||
|
||||
/// Sample Projects List Provider
|
||||
///
|
||||
/// Fetches and manages sample/model house projects from API.
|
||||
final class SampleProjectsListProvider
|
||||
extends $AsyncNotifierProvider<SampleProjectsList, List<SampleProject>> {
|
||||
/// Sample Projects List Provider
|
||||
///
|
||||
/// Fetches and manages sample/model house projects from API.
|
||||
const SampleProjectsListProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'sampleProjectsListProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$sampleProjectsListHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
SampleProjectsList create() => SampleProjectsList();
|
||||
}
|
||||
|
||||
String _$sampleProjectsListHash() =>
|
||||
r'1255814621d429e09c8e0cdec38fbc91bacc1c77';
|
||||
|
||||
/// Sample Projects List Provider
|
||||
///
|
||||
/// Fetches and manages sample/model house projects from API.
|
||||
|
||||
abstract class _$SampleProjectsList
|
||||
extends $AsyncNotifier<List<SampleProject>> {
|
||||
FutureOr<List<SampleProject>> build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build();
|
||||
final ref =
|
||||
this.ref as $Ref<AsyncValue<List<SampleProject>>, List<SampleProject>>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<AsyncValue<List<SampleProject>>, List<SampleProject>>,
|
||||
AsyncValue<List<SampleProject>>,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
||||
/// Sample Project Detail Provider
|
||||
///
|
||||
/// Fetches detail of a specific sample project by name.
|
||||
/// Uses family modifier to cache by project name.
|
||||
|
||||
@ProviderFor(sampleProjectDetail)
|
||||
const sampleProjectDetailProvider = SampleProjectDetailFamily._();
|
||||
|
||||
/// Sample Project Detail Provider
|
||||
///
|
||||
/// Fetches detail of a specific sample project by name.
|
||||
/// Uses family modifier to cache by project name.
|
||||
|
||||
final class SampleProjectDetailProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<SampleProject>,
|
||||
SampleProject,
|
||||
FutureOr<SampleProject>
|
||||
>
|
||||
with $FutureModifier<SampleProject>, $FutureProvider<SampleProject> {
|
||||
/// Sample Project Detail Provider
|
||||
///
|
||||
/// Fetches detail of a specific sample project by name.
|
||||
/// Uses family modifier to cache by project name.
|
||||
const SampleProjectDetailProvider._({
|
||||
required SampleProjectDetailFamily super.from,
|
||||
required String super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'sampleProjectDetailProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$sampleProjectDetailHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'sampleProjectDetailProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<SampleProject> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<SampleProject> create(Ref ref) {
|
||||
final argument = this.argument as String;
|
||||
return sampleProjectDetail(ref, argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is SampleProjectDetailProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
String _$sampleProjectDetailHash() =>
|
||||
r'6ea1bf329f69e0274df7f072ef1494ed04c3238d';
|
||||
|
||||
/// Sample Project Detail Provider
|
||||
///
|
||||
/// Fetches detail of a specific sample project by name.
|
||||
/// Uses family modifier to cache by project name.
|
||||
|
||||
final class SampleProjectDetailFamily extends $Family
|
||||
with $FunctionalFamilyOverride<FutureOr<SampleProject>, String> {
|
||||
const SampleProjectDetailFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'sampleProjectDetailProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
/// Sample Project Detail Provider
|
||||
///
|
||||
/// Fetches detail of a specific sample project by name.
|
||||
/// Uses family modifier to cache by project name.
|
||||
|
||||
SampleProjectDetailProvider call(String name) =>
|
||||
SampleProjectDetailProvider._(argument: name, from: this);
|
||||
|
||||
@override
|
||||
String toString() => r'sampleProjectDetailProvider';
|
||||
}
|
||||
Reference in New Issue
Block a user