Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Adding Flutter to existing Android app

Adding Flutter to existing Android app

Bhavik Makwana

October 12, 2019
Tweet

More Decks by Bhavik Makwana

Other Decks in Programming

Transcript

  1. Your code Android/iOS runner Hardware GPU, ARM, x86 chips C++

    Flutter engine (Skia, Text,Dart runtime, dart:ui) Flutter Framework in Dart (widgets,-Gestures, Animation, etc)
  2. 17

  3. build/host/outputs/repo └── com └── example └── my_flutter └── flutter_release ├──

    1.0 │ ├── flutter_release-1.0.aar │ ├── flutter_release-1.0.aar.md5 │ ├── flutter_release-1.0.aar.sha1 │ ├── flutter_release-1.0.pom │ ├── flutter_release-1.0.pom.md5 │ └── flutter_release-1.0.pom.sha1 ├── maven-metadata.xml ├── maven-metadata.xml.md5 └── maven-metadata.xml.sha1
  4. MyApp/app/build.gradle android { // ... } repositories { maven {

    url 'some/path/my_flutter/build/host/outputs/repo' // This is relative to the location of the build.gradle file // if using a relative path. } }
  5. MyApp/app/build.gradle android { // ... } repositories { maven {

    url 'some/path/my_flutter/build/host/outputs/repo' // This is relative to the location of the build.gradle file // if using a relative path. } } dependencies { // ... releaseImplementation('com.example.my_flutter:flutter_release:1.0@aar') { transitive = true } }
  6. View flutterView = Flutter.createView( MainActivity.this, getLifecycle(), "route1" ); FrameLayout.LayoutParams layout

    = new FrameLayout.LayoutParams(600, 800); Using Flutter's old facade classes
  7. View flutterView = Flutter.createView( MainActivity.this, getLifecycle(), "route1" ); FrameLayout.LayoutParams layout

    = new FrameLayout.LayoutParams(600, 800); layout.leftMargin = 100; layout.topMargin = 200; Using Flutter's old facade classes
  8. View flutterView = Flutter.createView( MainActivity.this, getLifecycle(), "route1" ); FrameLayout.LayoutParams layout

    = new FrameLayout.LayoutParams(600, 800); layout.leftMargin = 100; layout.topMargin = 200; addContentView(flutterView, layout); Using Flutter's old facade classes
  9. 30

  10. import 'dart:ui'; import 'package:flutter/material.dart'; void main() => runApp(_widgetForRoute(window.defaultRouteName)); 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), ); } }
  11. Hot restart / reload Debugging Dart code $ cd some/path/my_flutter

    $ flutter attach Waiting for a connection from Flutter on Nexus 5X...
  12. 38