generated from nimblehq/git-template
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #244 from nimblehq/feature/223-update-di-config-2
- Loading branch information
Showing
19 changed files
with
297 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 7 additions & 2 deletions
9
bricks/template/__brick__/{{project_name.snakeCase()}}/lib/api/api_service.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,19 @@ | ||
import 'package:dio/dio.dart'; | ||
import 'package:{{project_name.snakeCase()}}/model/response/user_response.dart'; | ||
import 'package:{{project_name.snakeCase()}}/api/response/user_response.dart'; | ||
import 'package:retrofit/retrofit.dart'; | ||
|
||
part 'api_service.g.dart'; | ||
|
||
abstract class BaseApiService { | ||
Future<List<UserResponse>> getUsers(); | ||
} | ||
|
||
@RestApi() | ||
abstract class ApiService { | ||
abstract class ApiService extends BaseApiService { | ||
factory ApiService(Dio dio, {String baseUrl}) = _ApiService; | ||
|
||
// TODO add API endpoint | ||
@override | ||
@GET('users') | ||
Future<List<UserResponse>> getUsers(); | ||
} |
15 changes: 10 additions & 5 deletions
15
...late/__brick__/{{project_name.snakeCase()}}/lib/api/repository/credential_repository.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
9 changes: 9 additions & 0 deletions
9
bricks/template/__brick__/{{project_name.snakeCase()}}/lib/di/di.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
import 'package:get_it/get_it.dart'; | ||
import 'package:injectable/injectable.dart'; | ||
|
||
import 'di.config.dart'; | ||
|
||
final GetIt getIt = GetIt.instance; | ||
|
||
@injectableInit | ||
Future<void> configureInjection() async => getIt.init(); |
15 changes: 15 additions & 0 deletions
15
bricks/template/__brick__/{{project_name.snakeCase()}}/lib/di/module/network_module.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
import 'package:{{project_name.snakeCase()}}/api/api_service.dart'; | ||
import 'package:{{project_name.snakeCase()}}/env.dart'; | ||
import 'package:{{project_name.snakeCase()}}/di/provider/dio_provider.dart'; | ||
import 'package:injectable/injectable.dart'; | ||
|
||
@module | ||
abstract class NetworkModule { | ||
@Singleton(as: BaseApiService) | ||
ApiService provideApiService(DioProvider dioProvider) { | ||
return ApiService( | ||
dioProvider.getDio(), | ||
baseUrl: Env.restApiEndpoint, | ||
); | ||
} | ||
} |
2 changes: 2 additions & 0 deletions
2
bricks/template/__brick__/{{project_name.snakeCase()}}/lib/di/provider/dio_provider.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
bricks/template/__brick__/{{project_name.snakeCase()}}/lib/home_view_model.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import 'dart:async'; | ||
import 'package:{{project_name.snakeCase()}}/home_view_state.dart'; | ||
import 'package:{{project_name.snakeCase()}}/usecases/base/base_use_case.dart'; | ||
import 'package:{{project_name.snakeCase()}}/usecases/user/get_users_use_case.dart'; | ||
import 'package:{{project_name.snakeCase()}}/model/user.dart'; | ||
import 'package:flutter_riverpod/flutter_riverpod.dart'; | ||
|
||
class HomeViewModel extends StateNotifier<HomeViewState> { | ||
final GetUsersUseCase _getUsersUseCase; | ||
|
||
HomeViewModel( | ||
this._getUsersUseCase, | ||
) : super(const HomeViewState.init()); | ||
|
||
final StreamController<List<User>> _usersStream = StreamController(); | ||
|
||
Stream<List<User>> get usersStream => _usersStream.stream; | ||
|
||
Future<void> getUsers() async { | ||
final result = await _getUsersUseCase.call(); | ||
if (result is Success<List<User>>) { | ||
_usersStream.add(result.value); | ||
} else { | ||
// TODO handle error | ||
} | ||
} | ||
} |
8 changes: 8 additions & 0 deletions
8
bricks/template/__brick__/{{project_name.snakeCase()}}/lib/home_view_state.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import 'package:freezed_annotation/freezed_annotation.dart'; | ||
|
||
part 'home_view_state.freezed.dart'; | ||
|
||
@freezed | ||
class HomeViewState with _$HomeViewState { | ||
const factory HomeViewState.init() = _Init; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
bricks/template/__brick__/{{project_name.snakeCase()}}/lib/model/user.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
import 'package:equatable/equatable.dart'; | ||
import 'package:{{project_name.snakeCase()}}/api/response/user_response.dart'; | ||
|
||
class User extends Equatable { | ||
final String email; | ||
final String username; | ||
|
||
const User({ | ||
required this.email, | ||
required this.username, | ||
}); | ||
|
||
factory User.fromUserResponse(UserResponse response) { | ||
return User( | ||
email: response.email, | ||
username: response.username, | ||
); | ||
} | ||
|
||
@override | ||
bool? get stringify => true; | ||
|
||
@override | ||
List<Object?> get props => [ | ||
email, | ||
username, | ||
]; | ||
} |
22 changes: 22 additions & 0 deletions
22
...template/__brick__/{{project_name.snakeCase()}}/lib/usecases/user/get_users_use_case.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import 'package:{{project_name.snakeCase()}}/api/exception/network_exceptions.dart'; | ||
import 'package:{{project_name.snakeCase()}}/api/repository/credential_repository.dart'; | ||
import 'package:{{project_name.snakeCase()}}/usecases/base/base_use_case.dart'; | ||
import 'package:{{project_name.snakeCase()}}/model/user.dart'; | ||
import 'package:injectable/injectable.dart'; | ||
|
||
@Injectable() | ||
class GetUsersUseCase extends NoParamsUseCase<List<User>> { | ||
final CredentialRepository _credentialRepository; | ||
|
||
GetUsersUseCase(this._credentialRepository); | ||
|
||
@override | ||
Future<Result<List<User>>> call() async { | ||
return _credentialRepository | ||
.getUsers() | ||
.then((value) => | ||
Success(value) as Result<List<User>>) // ignore: unnecessary_cast | ||
.onError<NetworkExceptions>( | ||
(err, stackTrace) => Failed(UseCaseException(err))); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
..._brick__/{{project_name.snakeCase()}}/test/api/repository/credential_repository_test.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 4 additions & 0 deletions
4
bricks/template/__brick__/{{project_name.snakeCase()}}/test/mocks/generate_mocks.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 10 additions & 0 deletions
10
...plate/__brick__/{{project_name.snakeCase()}}/test/mocks/response/user_response_mocks.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import 'package:{{project_name.snakeCase()}}/api/response/user_response.dart'; | ||
|
||
class UserResponseMocks { | ||
static UserResponse mock() { | ||
return UserResponse( | ||
"email", | ||
"username", | ||
); | ||
} | ||
} |
Oops, something went wrong.