1.config文件夹:
1.1assets.dart
返回一个Assets类,包含activities和destinations两个静态属性。两个静态属性分别代表虚拟数据存放的路径。在assets文件夹下
1.2 dependencies.dart
使用provider绑定远程访问和本地访问所需要的数据
2.data文件夹
2.1 repositories
activity文件夹
activity_resposity.dart
返回一个ActivityReposity抽象类,包含一个getByDestination的方法Future<Result<List<Activty>>;
activity_resposity_local.dart
ActivityResposityLocal继承ActivityReposity抽象类,构造函数中包含LocalDataService,LocalDataService位于services中的local文件夹当中,包含很多假的api.
LocalDataService有虚拟的getActivities方法返回一组activities.通过where找到对应的activities.
activity_resposity_remote.dart
ActivityRepositoryRemote继承ActivityReposity抽象类,构造函数中包含ApiClient,ApiClient位于services中的api文件夹中。
ApiClient通过访问api来获取数据。
auth文件夹
auth_reposity.dart
返回一个AuthReposity抽象类,包含isAuthenticated属性,login和logout方法
auth_reposity_dev.dart
AuthRepositoryDev实现了AuthReposity抽象类,isAuthenticated全部返回Future.value(ture);login和logout全部返回Result.ok(true);
auth_reposity_remote.dart
AuthRepositoryRemote实现了AuthReposity抽象类,isAuthenticated全部返回Future.value(ture);login和logout全部返回Result.ok(true);
AuthRepositoryRemote构造函数中添加apiClient、authApiClient和sharedPreferencesService。_sharedPreferencesService适用于存放token。authApiClient用于远程login或logout方法调用。输入分别为loginRequest,输出位loginResponse。
booking文件夹
booking_repostity.dart
BookingReposity抽象类有方法:getBookingsList返回值Future<Result<List<BookingSummary>>>,getBooking,createBooking,delete
booking_reposity_local.dart
BookingReposityLocal实现BookingReposity,构造方法含有localDataService,
booking_reposity_remote.dart
BookingReposityRemote实现BookingReposity,构造方法含有apiClient,getBooking通过_apiClient的getBooking方法,getBookingsList调用_apiClient.getBookings,delete调用_apiClient.deleteBooking.
continent文件夹
continent_resposity.dart
ContinentResposity抽象类getContinents。
destination文件夹
itinerary_config文件夹
user文件夹
2.2 services
api文件夹
model文件夹
booking文件夹
booking_api_model.dart
引用的destination,采用destinationRef,和domain中的booking.dart中的model不一致。domain中的Booking,destination采用的Destination class.
login_request文件夹
login_resonse文件夹
user文件夹
api_client.dart
ApiClient构造函数包括host,port,clientFactory.使用authHeaderProvider方法添加header,使用dart.io.httpclient作为请求client.有
getContinents,getDestinations,getActivityByDestination,getBookings,getBooking,postBooking,getUser,deleteBooking等方法。
auth_api_client.dart
AuthAPiClient构造函数包括host,port,clientFactory.有login方法。
auth_api_client.dart
local文件夹
shared_preferences_service.dart
2.3domain
models文件夹
activity文件夹
booking文件夹
continent文件夹
destination文件夹
itineary_config文件夹
user文件夹
use_cases文件夹
booking文件夹
booking_create_use_case.dart
将多个请求汇总成一个booking
booking_share_use_case.dart
2.4routing文件夹
router.dart
所有的go_router信息
routes.dart
所有的地址信息
2.5 ui
activities文件夹
view_models文件夹
widgts文件夹
auth文件夹
view_models文件夹
widgts文件夹
booking文件夹
view_models文件夹
widgts文件夹
core文件夹
view_models文件夹
widgts文件夹
home文件夹
view_models文件夹
widgts文件夹
results文件夹
view_models文件夹
widgts文件夹
search_form文件夹
view_models文件夹
widgts文件夹