diff --git a/add_to_app/README.md b/add_to_app/README.md index 4ec9bd0f1..ee6f09960 100644 --- a/add_to_app/README.md +++ b/add_to_app/README.md @@ -20,6 +20,8 @@ existing Android and iOS apps. * ['multiple_flutters'](./multiple_flutters) — Shows the usage of the Flutter Engine Group APIs to embed multiple instances of Flutter into an existing app with low memory cost. +* ['android_view'](./android_view) — Shows how to integrates a Flutter + add-to-app module at a view level for Android. ## Goals for these samples diff --git a/add_to_app/android_view/README.md b/add_to_app/android_view/README.md index ed2a9a26f..77abc795a 100644 --- a/add_to_app/android_view/README.md +++ b/add_to_app/android_view/README.md @@ -1,8 +1,25 @@ # android_view An example of an Android app that integrates a Flutter add-to-app module at a -view level. For more information on how to use it, see the [README](../README.md) -file located in the [/add_to_app](/add_to_app) directory of this repo. +view level. + +## tl;dr + +If you're just looking to get up and running quickly, these bash commands will +fetch packages and set up dependencies (note that the above commands assume +you're building for both iOS and Android, with both toolchains installed): + +```bash + #!/bin/bash + set -e + + cd flutter_module_using_plugin/ + flutter pub get + + # For Android builds: + open -a "Android Studio" ../android_view # macOS only + # Or open the ../android_fullscreen folder in Android Studio for other platforms. +``` ## Getting Started diff --git a/add_to_app/android_view/.gitignore b/add_to_app/android_view/android_view/.gitignore similarity index 100% rename from add_to_app/android_view/.gitignore rename to add_to_app/android_view/android_view/.gitignore diff --git a/add_to_app/android_view/android_view/README.md b/add_to_app/android_view/android_view/README.md new file mode 100644 index 000000000..3cf900235 --- /dev/null +++ b/add_to_app/android_view/android_view/README.md @@ -0,0 +1,4 @@ +# android_view + +An example of an Android app that integrates a Flutter add-to-app module at a +view level. For more information see [../README.md](../README.md). diff --git a/add_to_app/android_view/app/.gitignore b/add_to_app/android_view/android_view/app/.gitignore similarity index 100% rename from add_to_app/android_view/app/.gitignore rename to add_to_app/android_view/android_view/app/.gitignore diff --git a/add_to_app/android_view/app/build.gradle b/add_to_app/android_view/android_view/app/build.gradle similarity index 100% rename from add_to_app/android_view/app/build.gradle rename to add_to_app/android_view/android_view/app/build.gradle diff --git a/add_to_app/android_view/app/proguard-rules.pro b/add_to_app/android_view/android_view/app/proguard-rules.pro similarity index 100% rename from add_to_app/android_view/app/proguard-rules.pro rename to add_to_app/android_view/android_view/app/proguard-rules.pro diff --git a/add_to_app/android_view/app/src/main/AndroidManifest.xml b/add_to_app/android_view/android_view/app/src/main/AndroidManifest.xml similarity index 100% rename from add_to_app/android_view/app/src/main/AndroidManifest.xml rename to add_to_app/android_view/android_view/app/src/main/AndroidManifest.xml diff --git a/add_to_app/android_view/app/src/main/java/dev/flutter/example/androidView/FlutterViewEngine.kt b/add_to_app/android_view/android_view/app/src/main/java/dev/flutter/example/androidView/FlutterViewEngine.kt similarity index 100% rename from add_to_app/android_view/app/src/main/java/dev/flutter/example/androidView/FlutterViewEngine.kt rename to add_to_app/android_view/android_view/app/src/main/java/dev/flutter/example/androidView/FlutterViewEngine.kt diff --git a/add_to_app/android_view/app/src/main/java/dev/flutter/example/androidView/ListAdapter.kt b/add_to_app/android_view/android_view/app/src/main/java/dev/flutter/example/androidView/ListAdapter.kt similarity index 100% rename from add_to_app/android_view/app/src/main/java/dev/flutter/example/androidView/ListAdapter.kt rename to add_to_app/android_view/android_view/app/src/main/java/dev/flutter/example/androidView/ListAdapter.kt diff --git a/add_to_app/android_view/app/src/main/java/dev/flutter/example/androidView/MainActivity.kt b/add_to_app/android_view/android_view/app/src/main/java/dev/flutter/example/androidView/MainActivity.kt similarity index 100% rename from add_to_app/android_view/app/src/main/java/dev/flutter/example/androidView/MainActivity.kt rename to add_to_app/android_view/android_view/app/src/main/java/dev/flutter/example/androidView/MainActivity.kt diff --git a/add_to_app/android_view/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/add_to_app/android_view/android_view/app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to add_to_app/android_view/android_view/app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/add_to_app/android_view/app/src/main/res/drawable/ic_dashboard_black_24dp.xml b/add_to_app/android_view/android_view/app/src/main/res/drawable/ic_dashboard_black_24dp.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/drawable/ic_dashboard_black_24dp.xml rename to add_to_app/android_view/android_view/app/src/main/res/drawable/ic_dashboard_black_24dp.xml diff --git a/add_to_app/android_view/app/src/main/res/drawable/ic_home_black_24dp.xml b/add_to_app/android_view/android_view/app/src/main/res/drawable/ic_home_black_24dp.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/drawable/ic_home_black_24dp.xml rename to add_to_app/android_view/android_view/app/src/main/res/drawable/ic_home_black_24dp.xml diff --git a/add_to_app/android_view/app/src/main/res/drawable/ic_launcher_background.xml b/add_to_app/android_view/android_view/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/drawable/ic_launcher_background.xml rename to add_to_app/android_view/android_view/app/src/main/res/drawable/ic_launcher_background.xml diff --git a/add_to_app/android_view/app/src/main/res/drawable/ic_notifications_black_24dp.xml b/add_to_app/android_view/android_view/app/src/main/res/drawable/ic_notifications_black_24dp.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/drawable/ic_notifications_black_24dp.xml rename to add_to_app/android_view/android_view/app/src/main/res/drawable/ic_notifications_black_24dp.xml diff --git a/add_to_app/android_view/app/src/main/res/layout/activity_main.xml b/add_to_app/android_view/android_view/app/src/main/res/layout/activity_main.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/layout/activity_main.xml rename to add_to_app/android_view/android_view/app/src/main/res/layout/activity_main.xml diff --git a/add_to_app/android_view/app/src/main/res/layout/android_card.xml b/add_to_app/android_view/android_view/app/src/main/res/layout/android_card.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/layout/android_card.xml rename to add_to_app/android_view/android_view/app/src/main/res/layout/android_card.xml diff --git a/add_to_app/android_view/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/add_to_app/android_view/android_view/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/add_to_app/android_view/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/add_to_app/android_view/android_view/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/add_to_app/android_view/app/src/main/res/mipmap-hdpi/ic_launcher.png b/add_to_app/android_view/android_view/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/add_to_app/android_view/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/add_to_app/android_view/android_view/app/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-hdpi/ic_launcher_round.png rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/add_to_app/android_view/app/src/main/res/mipmap-mdpi/ic_launcher.png b/add_to_app/android_view/android_view/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/add_to_app/android_view/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/add_to_app/android_view/android_view/app/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-mdpi/ic_launcher_round.png rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/add_to_app/android_view/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/add_to_app/android_view/android_view/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/add_to_app/android_view/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/add_to_app/android_view/android_view/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/add_to_app/android_view/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/add_to_app/android_view/android_view/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/add_to_app/android_view/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/add_to_app/android_view/android_view/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/add_to_app/android_view/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/add_to_app/android_view/android_view/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/add_to_app/android_view/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/add_to_app/android_view/android_view/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from add_to_app/android_view/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to add_to_app/android_view/android_view/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/add_to_app/android_view/app/src/main/res/values-night/themes.xml b/add_to_app/android_view/android_view/app/src/main/res/values-night/themes.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/values-night/themes.xml rename to add_to_app/android_view/android_view/app/src/main/res/values-night/themes.xml diff --git a/add_to_app/android_view/app/src/main/res/values/colors.xml b/add_to_app/android_view/android_view/app/src/main/res/values/colors.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/values/colors.xml rename to add_to_app/android_view/android_view/app/src/main/res/values/colors.xml diff --git a/add_to_app/android_view/app/src/main/res/values/dimens.xml b/add_to_app/android_view/android_view/app/src/main/res/values/dimens.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/values/dimens.xml rename to add_to_app/android_view/android_view/app/src/main/res/values/dimens.xml diff --git a/add_to_app/android_view/app/src/main/res/values/strings.xml b/add_to_app/android_view/android_view/app/src/main/res/values/strings.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/values/strings.xml rename to add_to_app/android_view/android_view/app/src/main/res/values/strings.xml diff --git a/add_to_app/android_view/app/src/main/res/values/themes.xml b/add_to_app/android_view/android_view/app/src/main/res/values/themes.xml similarity index 100% rename from add_to_app/android_view/app/src/main/res/values/themes.xml rename to add_to_app/android_view/android_view/app/src/main/res/values/themes.xml diff --git a/add_to_app/android_view/build.gradle b/add_to_app/android_view/android_view/build.gradle similarity index 89% rename from add_to_app/android_view/build.gradle rename to add_to_app/android_view/android_view/build.gradle index dd599f66f..f6f990259 100644 --- a/add_to_app/android_view/build.gradle +++ b/add_to_app/android_view/android_view/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath "com.android.tools.build:gradle:4.2.0-beta02" + classpath 'com.android.tools.build:gradle:4.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/add_to_app/android_view/gradle.properties b/add_to_app/android_view/android_view/gradle.properties similarity index 100% rename from add_to_app/android_view/gradle.properties rename to add_to_app/android_view/android_view/gradle.properties diff --git a/add_to_app/android_view/gradle/wrapper/gradle-wrapper.jar b/add_to_app/android_view/android_view/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from add_to_app/android_view/gradle/wrapper/gradle-wrapper.jar rename to add_to_app/android_view/android_view/gradle/wrapper/gradle-wrapper.jar diff --git a/add_to_app/android_view/gradle/wrapper/gradle-wrapper.properties b/add_to_app/android_view/android_view/gradle/wrapper/gradle-wrapper.properties similarity index 93% rename from add_to_app/android_view/gradle/wrapper/gradle-wrapper.properties rename to add_to_app/android_view/android_view/gradle/wrapper/gradle-wrapper.properties index b2f6c917a..32d15d967 100644 --- a/add_to_app/android_view/gradle/wrapper/gradle-wrapper.properties +++ b/add_to_app/android_view/android_view/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Fri Dec 18 11:51:17 PST 2020 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/add_to_app/android_view/gradlew b/add_to_app/android_view/android_view/gradlew similarity index 100% rename from add_to_app/android_view/gradlew rename to add_to_app/android_view/android_view/gradlew diff --git a/add_to_app/android_view/gradlew.bat b/add_to_app/android_view/android_view/gradlew.bat similarity index 100% rename from add_to_app/android_view/gradlew.bat rename to add_to_app/android_view/android_view/gradlew.bat diff --git a/add_to_app/android_view/settings.gradle b/add_to_app/android_view/android_view/settings.gradle similarity index 100% rename from add_to_app/android_view/settings.gradle rename to add_to_app/android_view/android_view/settings.gradle diff --git a/add_to_app/android_view/flutter_module_using_plugin/.gitignore b/add_to_app/android_view/flutter_module_using_plugin/.gitignore new file mode 100644 index 000000000..86f469179 --- /dev/null +++ b/add_to_app/android_view/flutter_module_using_plugin/.gitignore @@ -0,0 +1,42 @@ +.DS_Store +.dart_tool/ + +.packages +.pub/ + +.idea/ +.vagrant/ +.sconsign.dblite +.svn/ + +*.swp +profile + +DerivedData/ + +.generated/ + +*.pbxuser +*.mode1v3 +*.mode2v3 +*.perspectivev3 + +!default.pbxuser +!default.mode1v3 +!default.mode2v3 +!default.perspectivev3 + +xcuserdata + +*.moved-aside + +*.pyc +*sync/ +Icon? +.tags* + +build/ +.android/ +.ios/ +.flutter-plugins +.flutter-plugins-dependencies diff --git a/add_to_app/android_view/flutter_module_using_plugin/.metadata b/add_to_app/android_view/flutter_module_using_plugin/.metadata new file mode 100644 index 000000000..194fb3cc0 --- /dev/null +++ b/add_to_app/android_view/flutter_module_using_plugin/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: 532a8fed41a4f6595965f02f3edf9666ba5ebf44 + channel: master + +project_type: module diff --git a/add_to_app/android_view/flutter_module_using_plugin/README.md b/add_to_app/android_view/flutter_module_using_plugin/README.md new file mode 100644 index 000000000..01c484f82 --- /dev/null +++ b/add_to_app/android_view/flutter_module_using_plugin/README.md @@ -0,0 +1,14 @@ +# flutter_module_using_plugin + +An example Flutter module that uses a native plugin, intended for use in the +Flutter add-to-app samples. For more information on how to use it, see the +[README.md](../README.md) parent directory. + +## Getting Started + +For more information about Flutter, check out +[flutter.dev](https://flutter.dev). + +For instructions on how to integrate Flutter modules into your existing +applications, see Flutter's +[add-to-app documentation](https://flutter.dev/docs/development/add-to-app). diff --git a/add_to_app/android_view/flutter_module_using_plugin/lib/cell.dart b/add_to_app/android_view/flutter_module_using_plugin/lib/cell.dart new file mode 100644 index 000000000..3715d684f --- /dev/null +++ b/add_to_app/android_view/flutter_module_using_plugin/lib/cell.dart @@ -0,0 +1,136 @@ +// Copyright 2019 The Flutter team. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:math'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:sensors/sensors.dart'; + +// This is on alternate entrypoint for this module to display Flutter UI in +// a (multi-)view integration scenario. +void main() { + runApp(Cell()); +} + +class Cell extends StatefulWidget { + @override + State createState() => new _CellState(); +} + +class _CellState extends State with WidgetsBindingObserver { + static const double gravity = 9.81; + static final AccelerometerEvent defaultPosition = AccelerometerEvent(0, 0, 0); + + int cellNumber = 0; + Random _random; + AppLifecycleState appLifecycleState; + + @override + void initState() { + final channel = MethodChannel('dev.flutter.example/cell'); + channel.setMethodCallHandler((MethodCall call) async { + if (call.method == 'setCellNumber') { + setState(() { + cellNumber = call.arguments as int; + _random = Random(cellNumber); + }); + } + }); + // Keep track of what the current platform lifecycle state is. + WidgetsBinding.instance.addObserver(this); + super.initState(); + } + + @override + void dispose() { + WidgetsBinding.instance.removeObserver(this); + super.dispose(); + } + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + setState(() { + appLifecycleState = state; + }); + } + + // Show a random bright color. + Color randomLightColor() { + _random ??= Random(cellNumber); + + return Color.fromARGB(255, _random.nextInt(50) + 205, + _random.nextInt(50) + 205, _random.nextInt(50) + 205); + } + + @override + Widget build(BuildContext context) { + return MaterialApp( + // The Flutter cells will be noticeably different (due to background color + // and the Flutter logo). The banner breaks immersion. + debugShowCheckedModeBanner: false, + home: Container( + color: Colors.white, + child: Builder( + builder: (BuildContext context) { + return Card( + // Mimic the platform Material look. + margin: EdgeInsets.symmetric(horizontal: 36, vertical: 24), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + elevation: 16, + color: randomLightColor(), + child: Stack( + children: [ + Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + // Show a number provided by the platform based on + // the cell's index. + cellNumber.toString(), + style: Theme.of(context).textTheme.headline3, + ), + ], + ), + ), + Positioned( + left: 42, + top: 0, + bottom: 0, + child: Opacity( + opacity: 0.2, + child: StreamBuilder( + // Don't continuously rebuild for nothing when the + // cell isn't visible. + stream: appLifecycleState == AppLifecycleState.resumed + ? accelerometerEvents + : Stream.value(defaultPosition), + initialData: defaultPosition, + builder: (BuildContext context, + AsyncSnapshot snapshot) { + return Transform( + // Figure out the phone's orientation relative + // to gravity's direction. Ignore the z vector. + transform: Matrix4.rotationX( + snapshot.data.y / gravity * pi / 2) + ..multiply(Matrix4.rotationY( + snapshot.data.x / gravity * pi / 2)), + alignment: Alignment.center, + child: FlutterLogo(size: 72)); + }, + ), + ), + ), + ], + ), + ); + }, + ), + ), + ); + } +} diff --git a/add_to_app/android_view/flutter_module_using_plugin/lib/main.dart b/add_to_app/android_view/flutter_module_using_plugin/lib/main.dart new file mode 100644 index 000000000..bcdb18031 --- /dev/null +++ b/add_to_app/android_view/flutter_module_using_plugin/lib/main.dart @@ -0,0 +1,184 @@ +// Copyright 2019 The Flutter team. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart' as launcher; + +import 'cell.dart'; + +/// The entrypoint for the flutter module. +void main() { + // This call ensures the Flutter binding has been set up before creating the + // MethodChannel-based model. + WidgetsFlutterBinding.ensureInitialized(); + + final model = CounterModel(); + + runApp( + ChangeNotifierProvider.value( + value: model, + child: MyApp(), + ), + ); +} + +/// This is on alternate entrypoint for this module to display Flutter UI in +/// a (multi-)view integration scenario. +// This is unfortunately in this file due to +// https://github.com/flutter/flutter/issues/72630. +void showCell() { + runApp(Cell()); +} + +/// A simple model that uses a [MethodChannel] as the source of truth for the +/// state of a counter. +/// +/// Rather than storing app state data within the Flutter module itself (where +/// the native portions of the app can't access it), this module passes messages +/// back to the containing app whenever it needs to increment or retrieve the +/// value of the counter. +class CounterModel extends ChangeNotifier { + CounterModel() { + _channel.setMethodCallHandler(_handleMessage); + _channel.invokeMethod('requestCounter'); + } + + final _channel = MethodChannel('dev.flutter.example/counter'); + + int _count = 0; + + int get count => _count; + + void increment() { + _channel.invokeMethod('incrementCounter'); + } + + Future _handleMessage(MethodCall call) async { + if (call.method == 'reportCounter') { + _count = call.arguments as int; + notifyListeners(); + } + } +} + +/// The "app" displayed by this module. +/// +/// It offers two routes, one suitable for displaying as a full screen and +/// another designed to be part of a larger UI. +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Module Title', + routes: { + '/': (context) => FullScreenView(), + '/mini': (context) => Contents(), + }, + ); + } +} + +/// Wraps [Contents] in a Material [Scaffold] so it looks correct when displayed +/// full-screen. +class FullScreenView extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Full-screen Flutter with plugin'), + ), + body: const Contents(showExit: true), + ); + } +} + +/// The actual content displayed by the module. +/// +/// This widget displays info about the state of a counter and how much room (in +/// logical pixels) it's been given. It also offers buttons to increment the +/// counter, opening the Flutter documentation via the url_launcher plugin, and +/// (optionally) close the Flutter view. +class Contents extends StatelessWidget { + final bool showExit; + + const Contents({this.showExit = false}); + + @override + Widget build(BuildContext context) { + final mediaInfo = MediaQuery.of(context); + + return SizedBox.expand( + child: Stack( + children: [ + Positioned.fill( + child: DecoratedBox( + decoration: BoxDecoration( + color: Theme.of(context).scaffoldBackgroundColor, + ), + ), + ), + Positioned.fill( + child: Opacity( + opacity: .25, + child: FittedBox( + fit: BoxFit.cover, + child: FlutterLogo(), + ), + ), + ), + Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Window is ${mediaInfo.size.width.toStringAsFixed(1)} x ' + '${mediaInfo.size.height.toStringAsFixed(1)}', + style: Theme.of(context).textTheme.headline5, + ), + SizedBox(height: 16), + Consumer( + builder: (context, model, child) { + return Text( + 'Taps: ${model.count}', + style: Theme.of(context).textTheme.headline5, + ); + }, + ), + SizedBox(height: 16), + Consumer( + builder: (context, model, child) { + return ElevatedButton( + onPressed: () => model.increment(), + child: Text('Tap me!'), + ); + }, + ), + ElevatedButton( + onPressed: () async { + // Use the url_launcher plugin to open the Flutter docs in + // a browser. + final url = 'https://flutter.dev/docs'; + if (await launcher.canLaunch(url)) { + launcher.launch(url); + } + }, + child: Text('Open Flutter Docs'), + ), + if (showExit) ...[ + SizedBox(height: 16), + ElevatedButton( + onPressed: () => SystemNavigator.pop(), + child: Text('Exit this screen'), + ), + ], + ], + ), + ), + ], + ), + ); + } +} diff --git a/add_to_app/android_view/flutter_module_using_plugin/pubspec.lock b/add_to_app/android_view/flutter_module_using_plugin/pubspec.lock new file mode 100644 index 000000000..e975cd3bc --- /dev/null +++ b/add_to_app/android_view/flutter_module_using_plugin/pubspec.lock @@ -0,0 +1,229 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.5.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.15.0" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.3" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.10" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "4.3.2+3" + sensors: + dependency: "direct main" + description: + name: sensors + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.2+6" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.19" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "5.7.10" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+4" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+9" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.9" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5+1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+3" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" +sdks: + dart: ">=2.12.0-0.0 <3.0.0" + flutter: ">=1.22.0" diff --git a/add_to_app/android_view/flutter_module_using_plugin/pubspec.yaml b/add_to_app/android_view/flutter_module_using_plugin/pubspec.yaml new file mode 100644 index 000000000..2613ff379 --- /dev/null +++ b/add_to_app/android_view/flutter_module_using_plugin/pubspec.yaml @@ -0,0 +1,32 @@ +name: flutter_module_using_plugin +description: An example Flutter module that uses a plugin. + +version: 1.0.0+1 + +environment: + sdk: ">=2.6.0-dev <3.0.0" + +dependencies: + flutter: + sdk: flutter + provider: ^4.1.0 + url_launcher: ^5.2.5 + sensors: ^0.4.2 + +dev_dependencies: + flutter_test: + sdk: flutter + +flutter: + uses-material-design: true + + # This section identifies your Flutter project as a module meant for + # embedding in a native host app. These identifiers should _not_ ordinarily + # be changed after generation - they are used to ensure that the tooling can + # maintain consistency when adding or modifying assets and plugins. + # They also do not have any bearing on your native host application's + # identifiers, which may be completely independent or the same as these. + module: + androidX: true + androidPackage: dev.flutter.example.flutter_module_using_plugin + iosBundleIdentifier: dev.flutter.example.flutterModuleUsingPlugin diff --git a/add_to_app/android_view/flutter_module_using_plugin/test/widget_test.dart b/add_to_app/android_view/flutter_module_using_plugin/test/widget_test.dart new file mode 100644 index 000000000..40aceb1db --- /dev/null +++ b/add_to_app/android_view/flutter_module_using_plugin/test/widget_test.dart @@ -0,0 +1,49 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility that Flutter provides. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:flutter_module_using_plugin/main.dart'; +import 'package:provider/provider.dart'; + +class MockCounterModel extends ChangeNotifier implements CounterModel { + int _count = 0; + + int get count => _count; + + void increment() { + _count++; + notifyListeners(); + } +} + +void main() { + testWidgets('MiniView smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget( + MaterialApp( + home: ChangeNotifierProvider.value( + value: MockCounterModel(), + child: Contents(), + ), + ), + ); + + // Verify that our counter starts at 0. + expect(find.text('Taps: 0'), findsOneWidget); + expect(find.text('Taps: 1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.text('Tap me!')); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('Taps: 0'), findsNothing); + expect(find.text('Taps: 1'), findsOneWidget); + }); +} diff --git a/add_to_app/fullscreen/flutter_module/pubspec.lock b/add_to_app/fullscreen/flutter_module/pubspec.lock index 1454afdbe..892ad0c04 100644 --- a/add_to_app/fullscreen/flutter_module/pubspec.lock +++ b/add_to_app/fullscreen/flutter_module/pubspec.lock @@ -7,70 +7,56 @@ packages: name: archive url: "https://pub.dartlang.org" source: hosted - version: "2.0.13" - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "1.6.0" + version: "3.0.0" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.5.0-nullsafety.1" + version: "2.5.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.1" + version: "2.1.0" characters: dependency: transitive description: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.3" + version: "1.1.0" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" clock: dependency: transitive description: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.1" + version: "1.1.0" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0-nullsafety.3" - convert: - dependency: transitive - description: - name: convert - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" + version: "1.15.0" crypto: dependency: transitive description: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "2.1.5" + version: "3.0.0" espresso: dependency: "direct dev" description: @@ -84,14 +70,14 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" file: dependency: transitive description: name: file url: "https://pub.dartlang.org" source: hosted - version: "6.0.0-nullsafety.2" + version: "6.1.0" flutter: dependency: "direct main" description: flutter @@ -112,27 +98,20 @@ packages: description: flutter source: sdk version: "0.0.0" - json_rpc_2: - dependency: transitive - description: - name: json_rpc_2 - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.2" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10-nullsafety.1" + version: "0.12.10" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.3" + version: "1.3.0" nested: dependency: transitive description: @@ -146,21 +125,21 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.1" + version: "1.8.0" platform: dependency: transitive description: name: platform url: "https://pub.dartlang.org" source: hosted - version: "3.0.0-nullsafety.2" + version: "3.0.0" process: dependency: transitive description: name: process url: "https://pub.dartlang.org" source: hosted - version: "4.0.0-nullsafety.2" + version: "4.1.0" provider: dependency: "direct main" description: @@ -168,13 +147,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.3.2+3" - pub_semver: - dependency: transitive - description: - name: pub_semver - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.4" sky_engine: dependency: transitive description: flutter @@ -186,84 +158,77 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.2" + version: "1.8.1" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.10.0-nullsafety.1" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.1" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.1" + version: "1.1.0" sync_http: dependency: transitive description: name: sync_http url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.3.0" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.19-nullsafety.2" + version: "0.2.19" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.3" + version: "1.3.0" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.3" - vm_service_client: - dependency: transitive - description: - name: vm_service_client - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.6+2" - web_socket_channel: + version: "2.1.0" + vm_service: dependency: transitive description: - name: web_socket_channel + name: vm_service url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "6.0.1-nullsafety.1" webdriver: dependency: transitive description: name: webdriver url: "https://pub.dartlang.org" source: hosted - version: "2.1.2" + version: "3.0.0" sdks: - dart: ">=2.10.0-110 <2.11.0" - flutter: ">=1.16.0 <2.0.0" + dart: ">=2.12.0-0.0 <3.0.0" + flutter: ">=1.16.0" diff --git a/add_to_app/multiple_flutters/multiple_flutters_module/pubspec.lock b/add_to_app/multiple_flutters/multiple_flutters_module/pubspec.lock index 763ea98b4..5534b2b72 100644 --- a/add_to_app/multiple_flutters/multiple_flutters_module/pubspec.lock +++ b/add_to_app/multiple_flutters/multiple_flutters_module/pubspec.lock @@ -99,7 +99,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" stack_trace: dependency: transitive description: diff --git a/add_to_app/plugin/flutter_module_using_plugin/pubspec.lock b/add_to_app/plugin/flutter_module_using_plugin/pubspec.lock index 6328a967d..e975cd3bc 100644 --- a/add_to_app/plugin/flutter_module_using_plugin/pubspec.lock +++ b/add_to_app/plugin/flutter_module_using_plugin/pubspec.lock @@ -7,49 +7,49 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.5.0-nullsafety.3" + version: "2.5.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.3" + version: "2.1.0" characters: dependency: transitive description: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.5" + version: "1.1.0" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.3" + version: "1.2.0" clock: dependency: transitive description: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.3" + version: "1.1.0" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0-nullsafety.5" + version: "1.15.0" fake_async: dependency: transitive description: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.3" + version: "1.2.0" flutter: dependency: "direct main" description: flutter @@ -71,21 +71,21 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.3-nullsafety.3" + version: "0.6.3" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10-nullsafety.3" + version: "0.12.10" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.6" + version: "1.3.0" nested: dependency: transitive description: @@ -99,7 +99,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.3" + version: "1.8.0" plugin_platform_interface: dependency: transitive description: @@ -132,49 +132,49 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.4" + version: "1.8.1" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.10.0-nullsafety.6" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.3" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.3" + version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.3" + version: "1.2.0" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.19-nullsafety.6" + version: "0.2.19" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.5" + version: "1.3.0" url_launcher: dependency: "direct main" description: @@ -223,7 +223,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.5" + version: "2.1.0" sdks: dart: ">=2.12.0-0.0 <3.0.0" flutter: ">=1.22.0" diff --git a/add_to_app/prebuilt_module/flutter_module/pubspec.lock b/add_to_app/prebuilt_module/flutter_module/pubspec.lock index 1454afdbe..892ad0c04 100644 --- a/add_to_app/prebuilt_module/flutter_module/pubspec.lock +++ b/add_to_app/prebuilt_module/flutter_module/pubspec.lock @@ -7,70 +7,56 @@ packages: name: archive url: "https://pub.dartlang.org" source: hosted - version: "2.0.13" - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "1.6.0" + version: "3.0.0" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.5.0-nullsafety.1" + version: "2.5.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.1" + version: "2.1.0" characters: dependency: transitive description: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.3" + version: "1.1.0" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" clock: dependency: transitive description: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.1" + version: "1.1.0" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0-nullsafety.3" - convert: - dependency: transitive - description: - name: convert - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" + version: "1.15.0" crypto: dependency: transitive description: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "2.1.5" + version: "3.0.0" espresso: dependency: "direct dev" description: @@ -84,14 +70,14 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" file: dependency: transitive description: name: file url: "https://pub.dartlang.org" source: hosted - version: "6.0.0-nullsafety.2" + version: "6.1.0" flutter: dependency: "direct main" description: flutter @@ -112,27 +98,20 @@ packages: description: flutter source: sdk version: "0.0.0" - json_rpc_2: - dependency: transitive - description: - name: json_rpc_2 - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.2" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10-nullsafety.1" + version: "0.12.10" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.3" + version: "1.3.0" nested: dependency: transitive description: @@ -146,21 +125,21 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.1" + version: "1.8.0" platform: dependency: transitive description: name: platform url: "https://pub.dartlang.org" source: hosted - version: "3.0.0-nullsafety.2" + version: "3.0.0" process: dependency: transitive description: name: process url: "https://pub.dartlang.org" source: hosted - version: "4.0.0-nullsafety.2" + version: "4.1.0" provider: dependency: "direct main" description: @@ -168,13 +147,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.3.2+3" - pub_semver: - dependency: transitive - description: - name: pub_semver - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.4" sky_engine: dependency: transitive description: flutter @@ -186,84 +158,77 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.2" + version: "1.8.1" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.10.0-nullsafety.1" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.1" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.1" + version: "1.1.0" sync_http: dependency: transitive description: name: sync_http url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.3.0" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.19-nullsafety.2" + version: "0.2.19" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.3" + version: "1.3.0" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.3" - vm_service_client: - dependency: transitive - description: - name: vm_service_client - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.6+2" - web_socket_channel: + version: "2.1.0" + vm_service: dependency: transitive description: - name: web_socket_channel + name: vm_service url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "6.0.1-nullsafety.1" webdriver: dependency: transitive description: name: webdriver url: "https://pub.dartlang.org" source: hosted - version: "2.1.2" + version: "3.0.0" sdks: - dart: ">=2.10.0-110 <2.11.0" - flutter: ">=1.16.0 <2.0.0" + dart: ">=2.12.0-0.0 <3.0.0" + flutter: ">=1.16.0" diff --git a/tool/flutter_ci_script_stable.sh b/tool/flutter_ci_script_stable.sh index 1c4830571..df43f8670 100755 --- a/tool/flutter_ci_script_stable.sh +++ b/tool/flutter_ci_script_stable.sh @@ -3,6 +3,7 @@ set -e declare -ar PROJECT_NAMES=( + "add_to_app/android_view/flutter_module_using_plugin" \ "add_to_app/fullscreen/flutter_module" \ "add_to_app/prebuilt_module/flutter_module" \ "add_to_app/plugin/flutter_module_using_plugin" \