@main

class AppDelegate:FlutterAppDelegate {

lazy var flutterEngine=FlutterEngine(name: “my flutter engine”)

override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

flutterEngine.run();

return super.application(application, didFinishLaunchingWithOptions: launchOptions);

}

}

ViewController.swift

import UIKit

import Flutter

class ViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

// Do any additional setup after loading the view.

}

@IBAction func jumpFlutter(_ sender: Any)

{

let flutterEngine = (UIApplication.shared.delegate as! AppDelegate).flutterEngine;

let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)

present(flutterViewController, animated: true, completion: nil)

}

}

3.2 效果图

四 使用路由方式启动Flutter


4.1 代码ViewController.swift

import UIKit

import Flutter

class ViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

// Do any additional setup after loading the view.

}

@IBAction func jumpFlutter(_ sender: Any)

{

let flutterEngine = FlutterEngine()

flutterEngine.run(withEntrypoint: nil, initialRoute: “/a”)

let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)

present(flutterViewController, animated: true, completion: nil)

}

}

4.2 lib/main.dart

import ‘package:flutter/material.dart’;

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

// This widget is the root of your application.

@override

Widget build(BuildContext context) {

return MaterialApp(

title: ‘Flutter Demo’,

theme: ThemeData(

primarySwatch: Colors.blue,

),

routes: <String, WidgetBuilder>{

//“/”: (context) => MyHomePage(title: ‘Flutter Demo Home Page’),

‘/a’: (context) => MyPage(title: ‘Page A’),

‘/b’: (context) => MyPage(title: ‘Page B’)

},

//home: MyHomePage(title: ‘Flutter Demo Home Page’),

);

}

}

class MyPage extends StatelessWidget {

var title;

总结

其实要轻松掌握很简单,要点就两个:

  1. 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
  2. 多练。 (视频优势是互动感强,容易集中注意力)

你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。

你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。**

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。

[外链图片转存中…(img-WYmxwXTG-1720087696728)]

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐