整個App的啟動邏輯包括添加Flutter依賴項、創(chuàng)建Flutter引擎實例、配置Flutter引擎、啟動Flutter引擎并加載Flutter代碼,以及編寫Flutter頁面。最后,您可以構建并運行Android應用程序。

Flutter和Android混合工程的啟動邏輯與純Flutter應用程序的啟動邏輯略有不同。在混合工程中,您需要在Android項目中添加一些額外的代碼來啟動Flutter引擎并加載Flutter代碼。以下是整個app的啟動邏輯的詳細解釋:
在Android項目中添加Flutter依賴項
首先,您需要在Android項目中添加Flutter依賴項。在build.gradle文件中,添加以下依賴:
dependencies {
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
implementation 'androidx.annotation:annotation:1.2.0'
implementation 'io.flutter:flutter_embedding:2.8.1' // or your desired Flutter version
}
創(chuàng)建Flutter引擎實例
接下來,您需要在MainActivity類中創(chuàng)建一個Flutter引擎實例。您可以使用以下代碼創(chuàng)建FlutterEngine對象:
private FlutterEngine flutterEngine;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create a FlutterEngine.
flutterEngine = new FlutterEngine(this);
// Start executing Dart code in the FlutterEngine.
flutterEngine.getDartExecutor().executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
);
}
配置Flutter引擎
接下來,在MainActivity類中配置Flutter引擎。您可以使用以下代碼將Flutter引擎添加到Activity生命周期回調(diào)中:
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
在這個示例中,我們使用GeneratedPluginRegistrant類將所有默認的Flutter插件注冊到Flutter引擎中。您可以自己添加其他插件。
啟動Flutter引擎
接下來,在MainActivity類中啟動Flutter引擎并加載Flutter代碼。您可以使用以下代碼:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create a FlutterEngine.
flutterEngine = new FlutterEngine(this);
// Start executing Dart code in the FlutterEngine.
flutterEngine.getDartExecutor().executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
);
// Configure an initial route.
String initialRoute = "/";
flutterEngine.getNavigationChannel().setInitialRoute(initialRoute);
// Start FlutterActivity.
startActivity(
FlutterActivity
.withCachedEngine("my_engine_id")
.build(this)
);
}
編寫Flutter頁面
接下來,您需要編寫Flutter頁面。在lib/main.dart文件中,替換默認代碼:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My App',
home: Scaffold(
appBar: AppBar(
title: Text('My App'),
),
body: Center(
child: Text('Hello, Flutter!'),
),
),
);
}
}
運行Android應用程序
最后,您可以構建并運行Android應用程序,這將同時啟動原生和Flutter部分。在應用程序啟動后,它將顯示一個標題為“My App”的AppBar,并在屏幕中央顯示一條文本“Hello, Flutter!”。
總的來說,整個app的啟動邏輯包括添加Flutter依賴項、創(chuàng)建Flutter引擎實例、配置Flutter引擎、啟動Flutter引擎并加載Flutter代碼,以及編寫Flutter頁面。最后,您可以構建并運行Android應用程序。