Fix pull to refresh

This commit is contained in:
Hillel Coren 2020-06-03 21:26:15 +03:00
parent fd0057a33c
commit b65cb1590c
4 changed files with 70 additions and 63 deletions

View File

@ -69,40 +69,42 @@ class _ClientViewState extends State<ClientView>
),
],
),
body: Column(
children: <Widget>[
Expanded(
child: TabBarView(
controller: _controller,
children: <Widget>[
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ClientOverview(
viewModel: viewModel,
isFilter: widget.isFilter,
body: Builder(builder: (context) {
return Column(
children: <Widget>[
Expanded(
child: TabBarView(
controller: _controller,
children: <Widget>[
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ClientOverview(
viewModel: viewModel,
isFilter: widget.isFilter,
),
),
),
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ClientViewDetails(client: viewModel.client),
),
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ClientViewActivity(
viewModel: viewModel,
key: ValueKey(viewModel.client.id),
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ClientViewDetails(client: viewModel.client),
),
),
],
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ClientViewActivity(
viewModel: viewModel,
key: ValueKey(viewModel.client.id),
),
),
],
),
),
),
BottomButtons(
entity: client,
action1: EntityAction.settings,
action2: EntityAction.newInvoice,
),
],
),
BottomButtons(
entity: client,
action1: EntityAction.settings,
action2: EntityAction.newInvoice,
),
],
);
}),
floatingActionButton: FloatingActionButton(
heroTag: 'client_view_fab',
backgroundColor: Theme.of(context).primaryColorDark,

View File

@ -68,24 +68,26 @@ class _ExpenseViewState extends State<ExpenseView>
),
],
),
body: TabBarView(
controller: _controller,
children: <Widget>[
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ExpenseOverview(viewModel: viewModel),
),
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ExpenseViewDetails(expense: viewModel.expense),
),
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ExpenseViewDocuments(
viewModel: viewModel, expense: viewModel.expense),
),
],
),
body: Builder(builder: (context) {
return TabBarView(
controller: _controller,
children: <Widget>[
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ExpenseOverview(viewModel: viewModel),
),
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ExpenseViewDetails(expense: viewModel.expense),
),
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: ExpenseViewDocuments(
viewModel: viewModel, expense: viewModel.expense),
),
],
);
}),
floatingActionButton: company.isEnterprisePlan
? Builder(builder: (BuildContext context) {
return FloatingActionButton(

View File

@ -56,19 +56,21 @@ class _VendorViewState extends State<VendorView>
),
],
),
body: TabBarView(
controller: _controller,
children: <Widget>[
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: VendorOverview(viewModel: viewModel),
),
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: VendorViewDetails(vendor: viewModel.vendor),
),
],
),
body: Builder(builder: (context) {
return TabBarView(
controller: _controller,
children: <Widget>[
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: VendorOverview(viewModel: viewModel),
),
RefreshIndicator(
onRefresh: () => viewModel.onRefreshed(context),
child: VendorViewDetails(vendor: viewModel.vendor),
),
],
);
}),
floatingActionButton: FloatingActionButton(
heroTag: 'vendor_view_fab',
backgroundColor: Theme.of(context).primaryColorDark,

View File

@ -29,12 +29,13 @@ Completer<Null> refreshCompleter(BuildContext context) {
Completer<T> snackBarCompleter<T>(BuildContext context, String message,
{bool shouldPop = false}) {
final Completer<T> completer = Completer<T>();
final scaffold = Scaffold.of(context);
completer.future.then((_) {
if (shouldPop) {
Navigator.of(context).pop();
}
Scaffold.of(context).showSnackBar(SnackBar(
scaffold.showSnackBar(SnackBar(
content: SnackBarRow(
message: message,
)));