flutter_boost
flutter_boost copied to clipboard
如何在flutter的main函数中获取到native传过来的args
我使用了以下方法,在setup时候 传递参数,想在flutter的main函数接收,但是没有效果 android代码:
String[] shellArgs ={"--model","debug"};
FlutterBoostSetupOptions options = new FlutterBoostSetupOptions.Builder().shellArgs(shellArgs).build();
FlutterBoost.instance().setup(mApplication, new FlutterBoostDelegate() {
@Override
public void pushNativeRoute(FlutterBoostRouteOptions options) {
}
@Override
public void pushFlutterRoute(FlutterBoostRouteOptions options) {
}
}, engine -> {
Logger.i(TAG, "init: FlutterBoost end");
},options);
flutter代码:
void main(List<String> args) {
Log.global().i("[Flutter main]flutter args1 is:", args.toString());
};
请问这种方式能实现吗?或者有其方式解决这个问题吗?
public void executeDartEntrypoint( @NonNull DartEntrypoint dartEntrypoint, @Nullable List<String> dartEntrypointArgs) { if (isApplicationRunning) { Log.w(TAG, "Attempted to run a DartExecutor that is already running."); return; }
TraceSection.begin("DartExecutor#executeDartEntrypoint");
try {
Log.v(TAG, "Executing Dart entrypoint: " + dartEntrypoint);
flutterJNI.runBundleAndSnapshotFromLibrary(
dartEntrypoint.pathToBundle,
dartEntrypoint.dartEntrypointFunctionName,
dartEntrypoint.dartEntrypointLibrary,
assetManager,
dartEntrypointArgs);
isApplicationRunning = true;
} finally {
TraceSection.end();
}
}
已解决,dartEntrypointArgs 这个值是传到fluttermain函数的 参数,需要在engine赋值的时候给值 在flutterBoost类修改, 代码如下:
if (!engine.getDartExecutor().isExecutingDart()) {
// Pre-warm the cached FlutterEngine.
engine.getNavigationChannel().setInitialRoute(options.initialRoute());
ArrayList<String> objects = new ArrayList<>();
objects.add("--model");
objects.add("debug");
engine.getDartExecutor().executeDartEntrypoint(new DartExecutor.DartEntrypoint(
FlutterMain.findAppBundlePath(), options.dartEntrypoint()),objects);
}
大佬 ,iOS 怎么传递
大佬 ,iOS 怎么传递
` FlutterBoostSetupOptions *option = [[FlutterBoostSetupOptions alloc]init];
option.dartEntryPoint = @"main";
option.warmUpEngine = YES;
NSDictionary *initParams = @{
};
option.initalRoute = initParams.dictionaryToJson;
[[FlutterBoost instance] setup:application delegate:self callback:^(FlutterEngine *engine) {
} options:option];
`
public void executeDartEntrypoint( @nonnull DartEntrypoint dartEntrypoint, @nullable List dartEntrypointArgs) { if (isApplicationRunning) { Log.w(TAG, "Attempted to run a DartExecutor that is already running."); return; }
TraceSection.begin("DartExecutor#executeDartEntrypoint"); try { Log.v(TAG, "Executing Dart entrypoint: " + dartEntrypoint); flutterJNI.runBundleAndSnapshotFromLibrary( dartEntrypoint.pathToBundle, dartEntrypoint.dartEntrypointFunctionName, dartEntrypoint.dartEntrypointLibrary, assetManager, dartEntrypointArgs); isApplicationRunning = true; } finally { TraceSection.end(); }
}
已解决,dartEntrypointArgs 这个值是传到fluttermain函数的 参数,需要在engine赋值的时候给值 在flutterBoost类修改, 代码如下:
if (!engine.getDartExecutor().isExecutingDart()) { // Pre-warm the cached FlutterEngine. engine.getNavigationChannel().setInitialRoute(options.initialRoute()); ArrayList<String> objects = new ArrayList<>(); objects.add("--model"); objects.add("debug"); engine.getDartExecutor().executeDartEntrypoint(new DartExecutor.DartEntrypoint( FlutterMain.findAppBundlePath(), options.dartEntrypoint()),objects); }
这个是要修改 FlutterBoost 类,如果换了环境每次都要修改?
更新到 4.3.0 版本,可以通过 dartEntrypointArgs 传递启动数据了
//设置启动参数
val options = FlutterBoostSetupOptions.Builder().dartEntrypointArgs(listOf(BuildConfig.BUILD_TYPE)).build()
FlutterBoost.instance().setup(this, object : FlutterBoostDelegate {
override fun pushNativeRoute(options: FlutterBoostRouteOptions) {
}
override fun pushFlutterRoute(options: FlutterBoostRouteOptions) {
}
}, { engine: FlutterEngine? -> }, options)
main(List<String> args) async {
print("打印测试" + args.toString());
runApp(MyApp());
}
更新到 4.3.0 版本,可以通过 dartEntrypointArgs 传递启动数据了
//设置启动参数 val options = FlutterBoostSetupOptions.Builder().dartEntrypointArgs(listOf(BuildConfig.BUILD_TYPE)).build() FlutterBoost.instance().setup(this, object : FlutterBoostDelegate { override fun pushNativeRoute(options: FlutterBoostRouteOptions) { } override fun pushFlutterRoute(options: FlutterBoostRouteOptions) { } }, { engine: FlutterEngine? -> }, options)
main(List<String> args) async { print("打印测试" + args.toString()); runApp(MyApp()); }
麻烦问下 ios 端如何修改?
更新到 4.3.0 版本,可以通过 dartEntrypointArgs 传递启动数据了
//设置启动参数 val options = FlutterBoostSetupOptions.Builder().dartEntrypointArgs(listOf(BuildConfig.BUILD_TYPE)).build() FlutterBoost.instance().setup(this, object : FlutterBoostDelegate { override fun pushNativeRoute(options: FlutterBoostRouteOptions) { } override fun pushFlutterRoute(options: FlutterBoostRouteOptions) { } }, { engine: FlutterEngine? -> }, options)
main(List<String> args) async { print("打印测试" + args.toString()); runApp(MyApp()); }
麻烦问下 ios 端如何修改?
我们的 iOS 端没用 Flutter,Android 我们自己尝试性的搞