magpie 0.0.4 copy "magpie: ^0.0.4" to clipboard
magpie: ^0.0.4 copied to clipboard

A new Flutter plugin.

example/lib/main.dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:magpie/magpie.dart';
import 'package:magpie/pub_plugins/flutter_boost/support/logger.dart';
import 'simple_page_widgets.dart';
import 'package:magpie/magpie_bridge.dart';

void main() {
  runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    Magpie.singleton.registerPageBuilders({
      'flutterFragment': (String pageName, Map<String, dynamic> params, String _) =>
          FragmentRouteWidget(params),
      'flutterPage': (String pageName, Map<String, dynamic> params, String _) {
        print("flutterPage params:$params");
        return FlutterRouteWidget(params:params);
      },
    });
    //
    MagpieBridge.singleton.addDataListener((name, params) async {
      var a = "来自Dart的数据 Name = $name , Key = ${params.keys.first}";
      return a;
    });

    MagpieBridge.singleton.addNativeActionListener('EventTest',
        (name, params) async {
      var a = "来自Dart的Event $name key = " + params.keys.first;
      return a;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'magpie example',
        builder: Magpie.init(postPush: _onRoutePushed),
        home: Container(color:Colors.white));
  }

  void _onRoutePushed(
      String pageName,
      String uniqueId,
      Map<String, dynamic> params,
      Route<dynamic> route,
      Future<dynamic> _,
      ) {}
}

class FragmentRouteWidget extends StatelessWidget {
  final Map params;

  FragmentRouteWidget(this.params);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('This is a flutter fragment'),
      ),
      body: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          Container(
            margin: const EdgeInsets.only(top: 20.0),
            child: Text(
              params['tag'] ?? '',
              style: TextStyle(fontSize: 28.0, color: Colors.red),
            ),
            alignment: AlignmentDirectional.center,
          ),
          //Expanded(child: Container()),
          InkWell(
            child: Container(
                padding: const EdgeInsets.all(8.0),
                margin: const EdgeInsets.all(8.0),
                decoration: BoxDecoration(
                  color: Color(0xFFF59A23),
                  borderRadius: BorderRadius.all(Radius.circular(5.0)),
                ),
                child: Text(
                  'open flutter page',
                  style: TextStyle(fontSize: 18.0, color: Colors.black),
                )),
            onTap: () => Magpie.singleton.open("sample://flutterPage"),
          ),
          InkWell(
            child: Container(
                padding: const EdgeInsets.all(8.0),
                margin: const EdgeInsets.all(8.0),
                decoration: BoxDecoration(
                  color: Color(0xFFF59A23),
                  borderRadius: BorderRadius.all(Radius.circular(5.0)),
                ),
                child: Text(
                  'open native page',
                  style: TextStyle(fontSize: 18.0, color: Colors.black),
                )),
            onTap: () =>
                Magpie.singleton.open("native://nativePage",
                  urlParams: {"query": {"aaa": "bbb"}}, exts:{"exts":"hello"}).then((result){
                  assert(result == null || result is Map);
                  Map params = result;
                  if(params == null){
                    params = Map();
                  }
                  Logger.log("哈哈哈哈哈"+params.toString());
                }),
          ),
        ],
      ),
    );
  }
}
0
likes
15
pub points
0%
popularity

Publisher

unverified uploader

A new Flutter plugin.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter

More

Packages that depend on magpie