Open zmtzawqlp opened 2 years ago
根据大佬的提示,做了以下修改
安卓: 将 MainActivity 改为继承 FlutterBoostActivity
public class MainActivity extends FlutterBoostActivity {
private String uniqueId;
@Override
public String getUrl() {
return "SplashPage";
}
@Override
public String getUniqueId() {
if (uniqueId == null) {
uniqueId = FlutterBoostUtils.createUniqueId(getUrl());
}
return uniqueId;
}
}
最开始,试过在 application里面设置 initialRoute,好像没用。
public class MyApplication extends FlutterApplication {
@Override
public void onCreate() {
super.onCreate();
ArrayList<String> args = new ArrayList<>();
args.add("--trace-systrace");
args.add("--user-authorization-code=QZvoUptODA+KDgeFUluhheYns7X7CnDu9YRv8YmU0GXQcKLzs4C2WgjblrAIhtkqqGg==");
// 加不加 initialRoute 都一样。。
FlutterBoostSetupOptions options = new FlutterBoostSetupOptions.Builder().shellArgs(args.toArray(new String[0])).initialRoute("SplashPage").build();
FlutterBoost.instance().setup(this, new MyFlutterBoostDelegate(), engine->{
// Register the platform view
// engine.getPlatformViewsController().getRegistry().registerViewFactory("<platform-view-type>", new NativeViewFactory());
// engine.getPlugins();
}, options);
}
}
Ios: 在 AppDelegate.m 将root controller 改成以下,注意 给 FlutterBoostSetupOptions 设置 initalRoute 并没啥用
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
self.window = [[UIWindow alloc] initWithFrame: [UIScreen mainScreen].bounds];
[self.window makeKeyAndVisible];
//默认方法
MyFlutterBoostDelegate* delegate=[[MyFlutterBoostDelegate alloc ] init];
//加不加这段都一样,狗头
FlutterBoostSetupOptions* options = [FlutterBoostSetupOptions createDefault];
options.initalRoute=@"SplashPage";
[[FlutterBoost instance] setup:application delegate:delegate callback:^(FlutterEngine *engine) {
// NSObject<FlutterPluginRegistrar>* registrar = [engine registrarForPlugin:@"plugin-name"];
// FLNativeViewFactory* factory = [[FLNativeViewFactory alloc] initWithMessenger:registrar.messenger];
// [[engine registrarForPlugin:@"<plugin-name>"] registerViewFactory:factory withId:@"<platform-view-type>"];
} options:options];
FBFlutterViewContainer *fvc = FBFlutterViewContainer.new ;
[fvc setName:@"SplashPage" uniqueId:[[NSUUID UUID] UUIDString] params:@{} opaque:YES];
UINavigationController *rvc = [[UINavigationController alloc] initWithRootViewController:fvc];
rvc.navigationBar.hidden = YES;
delegate.navigationController=rvc;
self.window.rootViewController = rvc;
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end
Flutter:
FlutterBoostApp(initialRoute:'SplashPage')
如果有不对的地方,希望指出一下。谢谢
新的一个问题是:routeFactory 会走2次,一次看起来是 flutter 这端触发,一次是原生触发的。希望有空的时候帮忙看看。谢谢
flutter: SplashPage----1644546364676_SplashPage flutter: SplashPage----8AC93EB5-F0F9-4110-8155-4212E0B30CD8
注意,isFlutterPage 这个方法,我已经改过了。不会用 routeFactory 去判断,第一次触发是在 FlutterBoostAppState的初始化方法中
有谁知道这个怎么解决吗?
我也有同样的问题
魔改。把flutter触发的那次去掉。因为原生已经设置过了
1.用 flutter create 命令新建一个项目 2.加入boost
问题
谢谢
flutter_boost-e19bf36cb451e2790edb65d353a643dbd472f8fa.zip