@@ -3,21 +3,23 @@ part of petisland.notification;
3
3
class PostLoadingScreen extends StatefulWidget {
4
4
static const String name = '/PostLoadingScreen' ;
5
5
final String id;
6
+ final String type;
6
7
7
- const PostLoadingScreen ({Key key, @required this .id}) : super (key: key);
8
+ const PostLoadingScreen ({Key key, @required this .id, @required this .type})
9
+ : super (key: key);
8
10
9
11
@override
10
12
_PostLoadingScreenState createState () => _PostLoadingScreenState ();
11
13
}
12
14
13
15
class _PostLoadingScreenState extends State <PostLoadingScreen > {
14
- final PostService service = DI .get (PostService );
16
+ PostService get postService => DI .get (PostService );
17
+ RescueService get rescueService => DI .get (RescueService );
15
18
16
19
@override
17
20
void initState () {
18
21
super .initState ();
19
-
20
- service.getPost (widget.id).then (_handleResult).catchError (_handleError);
22
+ loadData ();
21
23
}
22
24
23
25
@override
@@ -30,7 +32,7 @@ class _PostLoadingScreenState extends State<PostLoadingScreen> {
30
32
Navigator .pop <PopResult >(context, PopResult .Failure );
31
33
}
32
34
33
- FutureOr _handleResult (Post value) {
35
+ FutureOr _navigatePost (Post value) {
34
36
Navigator .pushReplacement (
35
37
context,
36
38
TPageRoute (
@@ -42,4 +44,27 @@ class _PostLoadingScreenState extends State<PostLoadingScreen> {
42
44
),
43
45
);
44
46
}
47
+
48
+ void loadData () {
49
+ switch (widget.type.toLowerCase ()) {
50
+ case 'rescue' :
51
+ rescueService.getRescue (widget.id).then (_navigateRescue).catchError (_handleError);
52
+ break ;
53
+
54
+ case 'post' :
55
+ postService.getPost (widget.id).then (_navigatePost).catchError (_handleError);
56
+ break ;
57
+ default :
58
+ }
59
+ }
60
+
61
+ FutureOr _navigateRescue (Rescue value) {
62
+ Navigator .pushReplacement (
63
+ context,
64
+ TPageRoute (
65
+ builder: (_) => RescueDetailScreen (rescue: value),
66
+ settings: RouteSettings (name: RescueDetailScreen .name),
67
+ ),
68
+ );
69
+ }
45
70
}
0 commit comments