创建Flutter模块
#进入指定目录 $ cd #使用命令创建flutter模块,flutter_module是模块名 $ flutter create -t module flutter_module
主工程配置
app的build.gradle
android{ ...... compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } } dependencies { implementation project(':flutter') }
settings.gradle
#原有的代码 include ':app' #新增的代码 setBinding(new Binding([gradle: this])) evaluate(new File( settingsDir.parentFile, #flutter模块路径 'my_flutter/.android/include_flutter.groovy' ))
通过以上配置,sync后,在Android Studio目录结构中,就会多出一个flutter模块.
编写Widget
使用window.defaultRouteName()获取当前Android传入的标识符.
在main.dart中编写以下代码
import 'dart:ui'; import 'package:flutter/material.dart'; void main() => runApp(_widgetForRoute(window.defaultRouteName)); //根据不同的标识符,返回不同的Widget. Widget _widgetForRoute(String route) { switch (route) { case 'route1': return SomeWidget(...); case 'route2': return SomeOtherWidget(...); default: return Center( child: Text('Unknown route: $route', textDirection: TextDirection.ltr), ); } }
Java代码获取Flutter的Widget
使用Flutter.createView(Context,Lifecycle,string)获取widget.
//获取Flutter Widget public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //route1代表传入的标识符 View flutterView = Flutter.createView( MainActivity.this, getLifecycle(), "route1" ); } }