airship 1.0.1 copy "airship: ^1.0.1" to clipboard
airship: ^1.0.1 copied to clipboard

Airship flutter plugin.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:airship_example/styles.dart';

import 'package:flutter/services.dart' show DeviceOrientation, SystemChrome;

import 'package:airship_example/screens/home.dart';
import 'package:airship_example/screens/settings.dart';
import 'package:airship_example/screens/message_center.dart';
import 'package:airship_example/screens/message_view.dart';

import 'package:airship/airship.dart';

// Supported deep links
const String home_deep_link =  "home";
const String message_center_deep_link =  "message_center";
const String settings_deep_link =  "settings";

void main() {
  SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown,
  ]);

  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

// SingleTickerProviderStateMixin is used for animation
class _MyAppState extends State<MyApp> with SingleTickerProviderStateMixin {
  TabController controller;

  final GlobalKey<NavigatorState> key = GlobalKey();

  @override
  void initState() {
    super.initState();
    controller = TabController(length: 3, vsync: this);
    initPlatformState();
    addFlutterTag();
  }

  static void addFlutterTag() {
    Airship.addTags(["flutter"]);
  }

// Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    Airship.onPushReceived.listen((event) {
      debugPrint('Push Received $event');
    });

    Airship.onNotificationResponse
        .listen((event) => debugPrint('Notification Response $event'));

    Airship.onDeepLink.listen((event){
      const home_tab =  0;
      const message_tab =  1;
      const settings_tab =  2;

      switch(event) {
        case home_deep_link: {
          controller.animateTo(home_tab);
          break;
        }
        case message_center_deep_link: {
          controller.animateTo(message_tab);
          break;
        }
        case settings_deep_link: {
          controller.animateTo(settings_tab);
          break;
        }
      }
    });

    Airship.onInboxUpdated
        .listen((event) => debugPrint('Inbox updated link'));

    Airship.onShowInbox
        .listen((event) => debugPrint('Show inbox'));

    Airship.onShowInboxMessage.listen((messageId){
      key.currentState.push(MaterialPageRoute<Null>(builder: (BuildContext context) {
        return MessageView(messageId: messageId,);
      }));
    });


    Airship.onChannelRegistration.listen((event) {
      debugPrint('Channel registration $event');
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      navigatorKey:key,
      title: "Airship Sample App",
      initialRoute: "/",
      routes: {
        '/': (context) => tabBarView(),
      },
    );
  }

  Widget tabBarView() {
    return WillPopScope(
        onWillPop: null,
        child: Scaffold(
          body: TabBarView(
            children: <Widget>[Home(), MessageCenter(), Settings()],
            controller: controller,
          ),
          bottomNavigationBar: bottomNavigationBar(),
        ));
  }

  Widget bottomNavigationBar() {
    return Material(
      // set the color of the bottom navigation bar
      color: Styles.borders,
      // set the tab bar as the child of bottom navigation bar
      child: TabBar(
        indicatorColor: Styles.airshipRed,
        tabs: <Tab>[
          Tab(
            // set icon to the tab
            icon: Icon(Icons.home),
          ),
          Tab(
            icon: Icon(Icons.inbox),
          ),
          Tab(
            icon: Icon(Icons.settings),
          ),
        ],
        // setup the controller
        controller: controller,
      ),
    );
  }
}
0
likes
20
pub points
0%
popularity

Publisher

unverified uploader

Airship flutter plugin.

Homepage

License

unknown (LICENSE)

Dependencies

flutter

More

Packages that depend on airship