集成到已有App官方文档
-
1 2
| cd some/path/ flutter create --template module my_flutter
|
如图所示

-
1 2 3 4 5
| flutter_application_path = '../my_flutter' load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb') target 'MyApp' do install_all_flutter_pods(flutter_application_path) end
|

-
至此,准备工作已经完成,大概三分钟就搞定.然后就可以开心的用flutter写代码了,一次编写两端运行,测试人员笑的合不拢嘴.
用Android studio打开刚才的my_flutter工程,或者用Xcode打开my_flutter文件夹下隐藏目录.ios下的Runner.xcworkspace,当场运行起来,立竿见影.

- 把flutter写的页面,集成到iOS工程里,作为一个iOS页面.
AppDelegate.h:
1 2 3 4 5 6 7
| @import UIKit; @import Flutter;
@interface AppDelegate : FlutterAppDelegate // More on the FlutterAppDelegate below. @property (nonatomic,strong) FlutterEngine *flutterEngine; @end
|
AppDelegate.m:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| // Used to connect plugins (only if you have plugins with iOS platform code). #import <FlutterPluginRegistrant/GeneratedPluginRegistrant.h>
#import "AppDelegate.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions { self.flutterEngine = [[FlutterEngine alloc] initWithName:@"my flutter engine"]; // Runs the default Dart entrypoint with a default Flutter route. [self.flutterEngine run]; // Used to connect plugins (only if you have plugins with iOS platform code). [GeneratedPluginRegistrant registerWithRegistry:self.flutterEngine]; return [super application:application didFinishLaunchingWithOptions:launchOptions]; }
@end
|
- 随意找个页面,点击某个按钮,push到flutter页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| @import Flutter; #import "AppDelegate.h" #import "ViewController.h"
@implementation ViewController - (void)viewDidLoad { [super viewDidLoad];
// Make a button to call the showFlutter function when pressed. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button addTarget:self action:@selector(showFlutter) forControlEvents:UIControlEventTouchUpInside]; [button setTitle:@"Show Flutter!" forState:UIControlStateNormal]; button.backgroundColor = UIColor.blueColor; button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); [self.view addSubview:button]; }
- (void)showFlutter { FlutterEngine *flutterEngine = ((AppDelegate *)UIApplication.sharedApplication.delegate).flutterEngine; FlutterViewController *flutterViewController = [[FlutterViewController alloc] initWithEngine:flutterEngine nibName:nil bundle:nil]; [self presentViewController:flutterViewController animated:YES completion:nil]; } @end
|
