2017-07-27 66 views

回答

2

您可以使用platform channel。它不应该很难。您需要在本地代码中添加处理程序,并通过通道重定向url以晃动代码。 实施例为iOS:

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [GeneratedPluginRegistrant registerWithRegistry:self]; 
    FlutterViewController *controller = (FlutterViewController*)self.window.rootViewController; 

    self.urlChannel = [FlutterMethodChannel methodChannelWithName:@"com.myproject/url" binaryMessenger:controller]; 

    return [super application:application didFinishLaunchingWithOptions:launchOptions]; 
} 

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{ 

    [self.urlChannel invokeMethod:@"openURL" 
         arguments:@{@"url" : url.absoluteString}]; 

    return true; 
} 

@end 

和基本扑代码:

class _MyHomePageState extends State<MyHomePage> { 

    final MethodChannel channel = const MethodChannel("com.myproject/url"); 

    String _url; 

    @override 
    initState() { 
    super.initState(); 

    channel.setMethodCallHandler((MethodCall call) async { 
     debugPrint("setMethodCallHandler call = $call"); 

     if (call.method == "openURL") { 
     setState(() => _url = call.arguments["url"]); 
     } 
    }); 
    } 


    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     appBar: new AppBar(
     title: new Text(_url ?? "No URL"), 
    ), 
    ); 
    } 
} 
相关问题