use*_*917 5 ios dart swift flutter
我正在将 Flutter 模块集成到 ios Native 项目中,我想从 ios native 设置初始路由,但它不起作用,它使用默认路由。
视图控制器.swift
import UIKit
import Flutter
class ViewController: UIViewController {
let flutterEngine = FlutterEngine(name: "test")
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
flutterEngine.navigationChannel.invokeMethod("setInitialRoute", arguments:"/home")
flutterEngine.run();
}
@IBAction func handleClick(_ sender: Any) {
let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)
flutterViewController.setInitialRoute("/home")
self.navigationController?.pushViewController(flutterViewController, animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
main.dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
final _route = <String, WidgetBuilder>{
"/login": (context) => Login(),
"/home": (context) => Home()
};
@override
Widget build(BuildContext context) {
return MaterialApp(
routes: _route,
title: "App", // Title ???????
home: Scaffold(
// ??????????
appBar: AppBar(
title: Text("App Navi"),
),
body: Login(),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
登录,主页文件请看图片,因为stackoverflow不能发布文字“看起来你的帖子主要是代码;请添加更多细节。”
此问题现已修复,从Flutter 1.22开始,可以使用以下方法完成:
初始化 flutter 引擎时:
let flutterEngine = FlutterEngine()
// FlutterDefaultDartEntrypoint is the same as nil, which will run main().
engine.run(
withEntrypoint: FlutterDefaultDartEntrypoint, initialRoute: "/onboarding")
Run Code Online (Sandbox Code Playgroud)
并且,直接在创建时FlutterViewController,
let flutterViewController = FlutterViewController(
project: nil,
initialRoute: "/onboarding",
nibName: nil,
bundle: nil)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
852 次 |
| 最近记录: |