pubspec.yaml文件新增依赖
dependencies:url_launcher: ^6.1.11
await launchUrlString("flutterScheme://");
await launchUrlString("flutterScheme://detail");
await launchUrlString("flutterScheme://detail?name=xxxx&age=18");
接收Scheme的参数
appscheme: ^1.0.8
@override
void initState() {
super.initState();
AppScheme? appScheme = AppSchemeImpl.getInstance();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
appScheme!.getInitScheme().then((value) {
if (value != null) {
String dataString = value.dataString ?? '';
Uri url = Uri.parse(dataString.replaceFirst(
'flutterScheme://',
'http://path/',
));
String name= url.queryParameters["name"];
String int= url.queryParameters["age"];
}
});
});
}
需要被打开的APP
Android
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.APP_BROWSER" />
<data android:scheme="flutterScheme"
android:host="detail"
/>
</intent-filter>
注意:如果你需要打开一个新的app进程,而不是内嵌方式,请修改activity的启动模式launchMode为singleTask
android:launchMode="singleTask"
IOS
打开Xcode->Info->URL Types设置URL Scheme

ios/Runner/Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>flutterScheme://detail?name=xxxx&age=18</string>
</array>
</dict>
</array>
</dict>
</plist>