如何在Flutter中为Android设置初始路由?

3

我希望在MainActivity的onCreate方法中告诉我的应用程序以确定的路线启动,就像这样:

Original Answer翻译成"最初的回答"

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    GeneratedPluginRegistrant.registerWith(this)
    flutterView.setInitialRoute("anotherRoute") // <-- no result
}

但是它没有给出结果,Dart端仍然将标准“/”作为window.defaultRouteName

如果在调用super之前设置它,则会给我NullPointer:

最初的回答:

当设置window.defaultRouteName时,需要确保在调用父类构造函数之后进行设置。否则,它将返回默认值“/”,并可能导致空指针异常。

override fun onCreate(savedInstanceState: Bundle?) {
    flutterView.setInitialRoute("anotherRoute") // <-- NullPointer
    super.onCreate(savedInstanceState)
    GeneratedPluginRegistrant.registerWith(this)
}

在MaterialApp中不能使用initialRoute吗? - undefined
"initialRoute"的值将来自Flutter之外(例如通知) - undefined
1个回答

0
你需要重写createFlutterView方法。
  override fun createFlutterView(context: Context): FlutterView {
    val matchParent = WindowManager.LayoutParams(-1, -1)
    val view = FlutterView(this, null as AttributeSet?, this.createFlutterNativeView())
    view.setInitialRoute("/route2")
    view.layoutParams = matchParent

    this.setContentView(view)
    return view
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接