You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RSGDoctorApp/lib/widgets/shared/network_base_view.dart

41 lines
1.0 KiB
Dart

4 years ago
import 'package:doctor_app_flutter/core/enum/view_state.dart';
6 years ago
import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'app_loader_widget.dart';
5 years ago
import 'errors/error_message.dart';
6 years ago
class NetworkBaseView extends StatelessWidget {
final BaseViewModel baseViewModel;
final Widget child;
6 years ago
NetworkBaseView({Key? key, required this.baseViewModel, required this.child});
6 years ago
@override
Widget build(BuildContext context) {
return Container(
color: Colors.grey[100],
6 years ago
child: buildBaseViewWidget(),
);
}
buildBaseViewWidget() {
switch (baseViewModel.state) {
6 years ago
case ViewState.ErrorLocal:
case ViewState.Idle:
case ViewState.BusyLocal:
return child;
break;
case ViewState.Busy:
return AppLoaderWidget();
6 years ago
break;
case ViewState.Error:
5 years ago
return ErrorMessage(
error: baseViewModel.error!,
5 years ago
);
6 years ago
break;
}
}
}