Bug*_*pen 10 android routes deep-linking flutter
根据 Flutter 的官方深度链接页面,我们不需要任何插件或原生 Android/iOS 代码来处理深度链接。
但它并没有真正告诉我们如何从该链接获取数据。我是从编码的角度来谈论的。当然,他们在那里写道:
但这并没有告诉我应该在哪里编写什么代码才能真正获得完整的链接。我已经查找了示例/教程,但我找不到任何不使用插件来处理深度链接的内容。
现在,我所做的就是在文件<intent-filter>
中添加标签AndroidManifest.xml
,然后单击链接,我的应用程序就开始显示。但我不知道如何从该链接中提取数据。
有人可以在这里指导我吗?提前致谢。
您需要特定于平台的代码来处理深度链接。如果您点击文档中提到的链接,您将找到完整的示例。
\nprivate val CHANNEL = "poc.deeplink.flutter.dev/channel"\nprivate var startString: String? = null\noverride fun configureFlutterEngine(@NonNull flutterEngine:FlutterEngine) {\nGeneratedPluginRegistrant.registerWith(flutterEngine)\n\nMethodChannel(flutterEngine.dartExecutor, CHANNEL).setMethodCallHandler { call, result ->\n if (call.method == "initialLink") {\n if (startString != null) {\n result.success(startString)\n }\n }\n }\n}\n\n\noverride fun onCreate(savedInstanceState: Bundle?) {\n super.onCreate(savedInstanceState)\n\n val intent = getIntent()\n startString = intent.data?.toString()\n}\n
Run Code Online (Sandbox Code Playgroud)\n颤振代码:
\nclass DeepLinkBloc extends Bloc {\n\n //Event Channel creation\nstatic const stream = const \nEventChannel(\'poc.deeplink.flutter.dev/events\');\n\n//Method channel creation\nstatic const platform = const \nMethodChannel(\'poc.deeplink.flutter.dev/channel\');\n\n StreamController<String> _stateController = StreamController();\n\n Stream<String> get state => _stateController.stream;\n\n Sink<String> get stateSink => _stateController.sink;\n\n\n//Adding the listener into contructor\nDeepLinkBloc() {\n //Checking application start by deep link\n startUri().then(_onRedirected);\n //Checking broadcast stream, if deep link was clicked in opened appication\n\n stream.receiveBroadcastStream().listen((d) => _onRedirected(d));\n}\n\n\n_onRedirected(String uri) {\n // Here can be any uri analysis, checking tokens etc, if it\xe2\x80\x99s necessary\n // Throw deep link URI into the BloC\'s stream\n stateSink.add(uri);\n}\n\n\n @override\n void dispose() {\n _stateController.close();\n }\n\n\n Future<String> startUri() async {\n try {\n return platform.invokeMethod(\'initialLink\');\n } on PlatformException catch (e) {\n return "Failed to Invoke: \'${e.message}\'.";\n }\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n请点击此链接了解更多详细信息。
\n\n 归档时间: |
|
查看次数: |
4134 次 |
最近记录: |