progress_dialog
progress_dialog copied to clipboard
Multiple dialogs on multiple Routes
Working example for problem:
import 'package:flutter/material.dart';
import 'package:progress_dialog/progress_dialog.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: ParentWidget()
);
}
}
class ParentWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text("PatentWidget"),
RaisedButton(
child: Text("start child 1"),
onPressed: () async{
ProgressDialog progressDialog = ProgressDialog(
context,
type: ProgressDialogType.Normal,
isDismissible: true,
);
progressDialog.show();
await new Future.delayed(const Duration(seconds : 1)); // simulate loading
await Navigator.push(
context, MaterialPageRoute <dynamic>(
builder: (context) => Child1Widget()
)
);
progressDialog.hide();
}
),
],
);
}
}
class Child1Widget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text("Child1Widget"),
RaisedButton(
child: Text("start child 2"),
onPressed: () async{
ProgressDialog progressDialog = ProgressDialog(
context,
type: ProgressDialogType.Normal,
isDismissible: true,
);
progressDialog.show();
await new Future.delayed(const Duration(seconds : 1)); // simulate loading
await Navigator.push(
context, MaterialPageRoute <dynamic>(
builder: (context) => Child2Widget()
)
);
progressDialog.hide();
},
),
RaisedButton(
child: Text("back to parent"),
onPressed: () {
Navigator.of(context).pop();
}
)
],
);
}
}
class Child2Widget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text("Child2Widget"),
RaisedButton(
child: Text("back to child 1"),
onPressed: () {
Navigator.of(context).pop();
}
)
],
);
}
}
ParentWidget -> Child1Widget and back works properly
ParentWidget -> Child1Widget -> Child2Widget:
- Child1Widget -> Child2Widget - no dialog
- Child2Widget -> Child1Widget -> ParentWidget - dialog on ParentWidget cannot be removed