我正在Flutter中尝试的此功能称为添加到应用。 我阅读了他们的documentation中包含的说明,说明如何将 从文档example中可以看出,我应该能够添加 我们的示例非常简单,但是根据检查(Github和SO),仅当您使用 不幸的是,每当我尝试使用自定义入口点添加自己的 我有没有机会仍然将 设置 环境 答案 0 :(得分:1) 出了什么问题? 目前,如果您使用的是 AndroidX ,则可以使用 我以前在Github中打开了一个issue来解决此问题,在撰写本文时它仍然处于打开状态。 将Flutter添加为AAR依赖项既有优点也有缺点。使用AAR,您的团队无需在本地计算机上安装Flutter SDK,也不需要安装Dart SDK。但是,由于AAR文件是已编译的工件,因此您的团队可能无法在开发过程中编辑项目的Flutter源代码。 Here's文档,介绍如何通过将Flutter源代码添加为AAR模块来设置Android项目。 但是为什么真正使用AAR? 在内部, 但是,我需要我的团队在处理Flutter应用程序功能的同时,对Android应用程序项目进行一些更改。 好吧,由于您不能在该特定类型的设置中使用 feature_fragment.kt feature_layout.xml 但是,有一个小问题…… 与 进一步阅读 FlutterFragment
添加为我的应用程序中的一部分。newFlutterFragment
,就像在Android中添加普通Fragment
类一样。// Create and attach a FlutterFragment if one does not exist.
if (flutterFragment == null) {
var newFlutterFragment = FlutterFragment.createDefault()
flutterFragment = newFlutterFragment
fragmentManager
.beginTransaction()
.add(
R.id.fragment_container,
newFlutterFragment,
TAG_FLUTTER_FRAGMENT
)
.commit()
}
FlutterEngine
</strong加热main
时,它才有效>或默认入口点。
FlutterFragment
时,它似乎都不接受我在{{1}中传递的对象类型} .add(<INVALID_TYPE>,...,...)
的方法。
FragmentTransaction
用作我的Flutter剖视图的容器?
1 个答案:
FlutterFragment
嵌入Flutter布局的唯一方法是将其添加为 Android存档( AAR)。
FlutterFragment
和下面的一些(如果不是全部)类
FlutterFragment
仍在使用支持库,而不是AndroidX,依赖项存在不匹配。使用AAR并在编译期间启用了jetifier时,Flutter的AAR输出现在将使用等效的AndroidX库,这在运行时。
io.flutter.embedding
,因此您仍然可以使用FlutterFragment
,特别是如果您仅在Android应用中显示Flutter布局的一部分时。 FlutterView
portfolioEngine?.let { flutterEngine ->
// Start executing Dart code to pre-warm the FlutterEngine.
// https://github.com/flutter/flutter/wiki/Experimental:-Launch-Flutter-with-non-main-entrypoint
flutterEngine.dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint(
FlutterMain.findAppBundlePath(),
"customEntryPoint"
)
)
// Cache the FlutterEngine to be used by FlutterActivity.
FlutterEngineCache
.getInstance()
.put("SOME_FLUTTER_ENGINE_NAME", flutterEngine)
// Add the Flutter layout
flutterView = FlutterView(context)
flutterView.attachToFlutterEngine(flutterEngine)
flutterContainerView?.removeAllViews() // Only if deemed necessary
flutterContainerView?.addView(flutterView)
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/flutterContainerView"
android:layout_width="match_parent"
android:layout_height="300dp" />
</LinearLayout>
相比,使用FlutterActivity
或FlutterFragment
的好处之一是易于同时管理Android和Flutter代码的生命周期。不用担心,您仍然可以通过使用所附的FlutterView
管理其生命周期来处理Flutter代码的行为。