thrio 0.2.0 copy "thrio: ^0.2.0" to clipboard
thrio: ^0.2.0 copied to clipboard

discontinued
outdated

Thrio makes it easy and fast to add flutter to existing mobile applications, and provide a simple and consistent navigator APIs.

thrio logo #

Gitter Channel pub package license

中文文档 问题集

The Navigator for iOS, Android, Flutter.

Version 0.1.5 requires Flutter >= 1.12.0 and Dart >= 2.6.0.

Features #

  • push,pop,popTo,remove native pages or flutter pages from anywhere
  • Get the callback parameters when the push page is popped
  • Send and receive page notifications
  • Register observers for the life cycle of pages
  • Register observers for the route actions of pages
  • Hide native navigation bar for flutter pages

Getting started #

You should ensure that you add thrio as a dependency in your flutter project.

dependencies:
  thrio: '^0.1.5'

You can also reference the git repo directly if you want to support AndroidX:

dependencies:
  thrio:
    git: git@github.com:hellobike/thrio.git

You should then run flutter pub upgrade or update your packages in IntelliJ.

Example Project #

There is a pretty sweet example project in the example folder. Check it out. Otherwise, keep reading to get up and running.

push a page in dart #

ThrioNavigator.push(url: 'flutter1');

ThrioNavigator.push(url: 'native1', params: { '1': {'2': '3'}});

ThrioNavigator.push(url: 'native1', animated:true);

ThrioNavigator.push(
    url: 'biz2/flutter2',
    params: {'1': {'2': '3'}},
    poppedResult: (params) => ThrioLogger.v('biz2/flutter2 popped: $params'),
);

push a page in iOS #

[ThrioNavigator pushUrl:@"flutter1"];

[ThrioNavigator pushUrl:@"biz2/flutter2" poppedResult:^(id _Nonnull params) {
    ThrioLogV(@"biz2/flutter2 popped: %@", params);
}];

push a page in Android #

ThrioNavigator.push(this, "biz1/flutter1",
        mapOf("k1" to 1),
        false,
        poppedResult = {
            Log.e("Thrio", "native1 popResult call params $it")
        }
)

pop a page in dart #

ThrioNavigator.pop();
// Pop the page without animation
ThrioNavigator.pop(animated: false);
// Pop the page and return parameters
ThrioNavigator.pop(params: 'popped flutter1'),

pop a page in iOS #

[ThrioNavigator pop];
// Pop a page without animation
[ThrioNavigator popAnimated:NO];
// Pop the page and return parameters
[ThrioNavigator popParams:@{@"k1": @3}];

pop a page in Android #

ThrioNavigator.pop(this, params, animated)

popTo a page in dart #


ThrioNavigator.popTo(url: 'flutter1');

ThrioNavigator.popTo(url: 'flutter1', animated: false);

popTo a page in iOS #

[ThrioNavigator popToUrl:@"flutter1"];

[ThrioNavigator popToUrl:@"flutter1" animated:NO];

popTo a page in Android #

ThrioNavigator.popTo(context, url, index)

remove a page in dart #

ThrioNavigator.remove(url: 'flutter1');

ThrioNavigator.remove(url: 'flutter1', animated: true);

remove a page in iOS #

[ThrioNavigator removeUrl:@"flutter1"];

[ThrioNavigator removeUrl:@"flutter1" animated:NO];

remove a page in Android #

ThrioNavigator.remove(context, url, index)

notify a page in dart #

ThrioNavigator.notify(url: 'flutter1', name: 'reload');

notify a page in iOS #

[ThrioNavigator notifyUrl:@"flutter1" name:@"reload"];

notify a page in Android #

ThrioNavigator.notify(url, index, params)

receive page notifications in dart #

NavigatorPageNotify(
      name: 'page1Notify',
      onPageNotify: (params) =>
          ThrioLogger.v('flutter1 receive notify: $params'),
      child: Xxxx());

receive page notifications in iOS #

UIViewController implements the NavigatorPageNotifyProtocol and receives page notifications via onNotify

- (void)onNotify:(NSString *)name params:(id)params {
  ThrioLogV(@"native1 onNotify: %@, %@", name, params);
}

receive page notifications in Android #

Activity implements the OnNotifyListener and receives page notifications via onNotify

class Activity : AppCompatActivity(), OnNotifyListener {
    override fun onNotify(name: String, params: Any?) {
    }
}
9
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Thrio makes it easy and fast to add flutter to existing mobile applications, and provide a simple and consistent navigator APIs.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on thrio