whale

a whale is navigator developed using navigation 2.0.

Contents

1.Navigation

2.Dialog

3.Global

Push

You can push new page on specific page with Whale.go() method. It needs on argument and to argument which you want to push on page stack.

// These three method's exactly same operation

Whale.goByContext(from: context, to: AlarmView());
Whale.goByView(from: this or this.widget, to: AlarmView());

####Q. Why to argument type is Widget? because of some projects which communicate with each page with callback function see below:

Whale.goByView(
  from: this,
  to: PostAddview(
    onPostAdded: (post){
      // some projects use callback to communicate with each page
      _addPost(post);  
    }
  ),
  toName: '/post-add',
);

Pop

Like push operation, you can pop specific page by key or context.

Whale.backByContext(context);
Whale.backByView(this or this.widget);

Replace

If you want to replace specific page to other, do below:

Whale.replaceByContext(from: context, to: AlarmView());
Whale.replaceByView(from: this or this.widget, to: AlarmView());

Dialog Example

Whale manages dialog stack per page. So, If you want to show dialog, you should select a page which will present it.

Show Dialog

Whale.showDialogWithContext(
  context,
  CustomDialog(
    title: 'Hi, there!',
    subTitle: 'Welcome to my app.',
    onCloseButtonPressed: () {
        
    }
  ),
  key: 'IntroDialog', 
);

Util Function

For convenience, Whale gives you some streams and methods.

Get current page stack

You can get current page stack

String url = Whale.getCurrentUrl();
print(url);
// '/TreatmentHomeView/AlarmListView/AlarmDetailView

Listening back button press event (Android)

You can listen back button press event stream anywhere like below :

var subscription = Whale.backButtonStream((event){
    PageConfig pageConfig = event.onPageConfig;
    print(pageConfig.pageName);
});

Libraries

whale