美文网首页
flutter 在已有项目中引入flutter

flutter 在已有项目中引入flutter

作者: proud2008 | 来源:发表于2019-10-30 10:55 被阅读0次

    官方教程
    参考

    创建flutter模块

    在项目目录下执行

    $ cd some/path/
    $ flutter create -t module --org com.example my_flutter
    

    flutter模块项目使用androidx

    构建脚本

    // MyApp/settings.gradle
    include ':app'                                     // assumed existing content
    setBinding(new Binding([gradle: this]))                                 // new
    evaluate(new File(                                                      // new
      settingsDir.parentFile,                                               // new
      'my_flutter/.android/include_flutter.groovy'                          // new
    ))  
    

    引入flutter模块

    // MyApp/app/build.gradle
    
    dependencies {
      implementation project(':flutter')
    }
    

    activity中引入flutter组件

        public void addFlutterView() {
            View flutterView = Flutter.createView(
                    MainActivity.this,
                    getLifecycle(),
                    "route3"
            );
            FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            ((ViewGroup) findViewById(R.id.layout)).addView(flutterView, layout);
        }
    
        public void addFlutterFragment() {
            log("addFlutterFragment " + new Date().getTime());
            FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
            tx.replace(R.id.layout2, Flutter.createFragment("route1"));
            tx.commit();
        }
    //route 在dart代码中接收window.defaultRouteName 根据不同显示不同的ui
    
    
    //dart代码
    void main() => runApp(getRootView());
    
    Widget getRootView() {
      if ("route2" == window.defaultRouteName) {
        return MyApp2();
      } else {
        return MyApp();
      }
    }
    
    class MainActivity: FlutterActivity() {
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        GeneratedPluginRegistrant.registerWith(this)
      }
      //activty中使用路由
      override fun createFlutterView(context: Context?): FlutterView {
        val flutterView = FlutterView(this, null, this.createFlutterNativeView())
        flutterView.setInitialRoute("route1")
        this.setContentView(flutterView)
        return flutterView
      }
    }
    
    

    加速

    public class MixApp extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            Flutter.startInitialization(this);
        }
    }
    //或直接使用FlutterApplication
    

    debug模式会慢些,release打包后加载很快的。

    相关文章

      网友评论

          本文标题:flutter 在已有项目中引入flutter

          本文链接:https://www.haomeiwen.com/subject/hwcovctx.html