Implement deferred components
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index e333832..59cfa22 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -43,6 +43,6 @@
android:name="flutterEmbedding"
android:value="2"/>
</activity>
- <meta-data android:name="io.flutter.embedding.engine.deferredcomponents.DeferredComponentManager.loadingUnitMapping" android:value="2:crane,3:,4:,5:,6:,7:,8:,9:,10:,11:"/>
+ <meta-data android:name="io.flutter.embedding.engine.deferredcomponents.DeferredComponentManager.loadingUnitMapping" android:value="2:crane,3:fortnightly,4:rally,5:shrine,6:cupertino,7:material,8:reference,9:reference,10:reference,11:"/>
</application>
</manifest>
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index b0907ab..20a5de3 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -1,4 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="craneName">crane</string>
+ <string name="fortnightlyName">fortnightly</string>
+ <string name="rallyName">rally</string>
+ <string name="shrineName">shrine</string>
+ <string name="cupertinoName">cupertino</string>
+ <string name="materialName">material</string>
+ <string name="referenceName">reference</string>
</resources>
diff --git a/android/cupertino/build.gradle b/android/cupertino/build.gradle
new file mode 100644
index 0000000..4eb7e49
--- /dev/null
+++ b/android/cupertino/build.gradle
@@ -0,0 +1,46 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: "com.android.dynamic-feature"
+
+android {
+ compileSdkVersion 30
+
+ sourceSets {
+ applicationVariants.all { variant ->
+ main.assets.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_assets"
+ main.jniLibs.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_libs"
+ }
+ }
+
+ defaultConfig {
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ compileOptions {
+ sourceCompatibility 1.8
+ targetCompatibility 1.8
+ }
+}
+
+dependencies {
+ implementation project(":app")
+}
diff --git a/android/cupertino/src/main/AndroidManifest.xml b/android/cupertino/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..bd1faed
--- /dev/null
+++ b/android/cupertino/src/main/AndroidManifest.xml
@@ -0,0 +1,13 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:dist="http://schemas.android.com/apk/distribution"
+ package="com.example.gallery.cupertino">
+
+ <dist:module
+ dist:instant="false"
+ dist:title="@string/cupertinoName">
+ <dist:delivery>
+ <dist:on-demand />
+ </dist:delivery>
+ <dist:fusing dist:include="true" />
+ </dist:module>
+</manifest>
diff --git a/android/fortnightly/build.gradle b/android/fortnightly/build.gradle
new file mode 100644
index 0000000..4eb7e49
--- /dev/null
+++ b/android/fortnightly/build.gradle
@@ -0,0 +1,46 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: "com.android.dynamic-feature"
+
+android {
+ compileSdkVersion 30
+
+ sourceSets {
+ applicationVariants.all { variant ->
+ main.assets.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_assets"
+ main.jniLibs.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_libs"
+ }
+ }
+
+ defaultConfig {
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ compileOptions {
+ sourceCompatibility 1.8
+ targetCompatibility 1.8
+ }
+}
+
+dependencies {
+ implementation project(":app")
+}
diff --git a/android/fortnightly/src/main/AndroidManifest.xml b/android/fortnightly/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..1b60109
--- /dev/null
+++ b/android/fortnightly/src/main/AndroidManifest.xml
@@ -0,0 +1,13 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:dist="http://schemas.android.com/apk/distribution"
+ package="com.example.gallery.fortnightly">
+
+ <dist:module
+ dist:instant="false"
+ dist:title="@string/fortnightlyName">
+ <dist:delivery>
+ <dist:on-demand />
+ </dist:delivery>
+ <dist:fusing dist:include="true" />
+ </dist:module>
+</manifest>
diff --git a/android/material/build.gradle b/android/material/build.gradle
new file mode 100644
index 0000000..4eb7e49
--- /dev/null
+++ b/android/material/build.gradle
@@ -0,0 +1,46 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: "com.android.dynamic-feature"
+
+android {
+ compileSdkVersion 30
+
+ sourceSets {
+ applicationVariants.all { variant ->
+ main.assets.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_assets"
+ main.jniLibs.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_libs"
+ }
+ }
+
+ defaultConfig {
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ compileOptions {
+ sourceCompatibility 1.8
+ targetCompatibility 1.8
+ }
+}
+
+dependencies {
+ implementation project(":app")
+}
diff --git a/android/material/src/main/AndroidManifest.xml b/android/material/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..8f9cc1a
--- /dev/null
+++ b/android/material/src/main/AndroidManifest.xml
@@ -0,0 +1,13 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:dist="http://schemas.android.com/apk/distribution"
+ package="com.example.gallery.material">
+
+ <dist:module
+ dist:instant="false"
+ dist:title="@string/materialName">
+ <dist:delivery>
+ <dist:on-demand />
+ </dist:delivery>
+ <dist:fusing dist:include="true" />
+ </dist:module>
+</manifest>
diff --git a/android/rally/build.gradle b/android/rally/build.gradle
new file mode 100644
index 0000000..4eb7e49
--- /dev/null
+++ b/android/rally/build.gradle
@@ -0,0 +1,46 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: "com.android.dynamic-feature"
+
+android {
+ compileSdkVersion 30
+
+ sourceSets {
+ applicationVariants.all { variant ->
+ main.assets.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_assets"
+ main.jniLibs.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_libs"
+ }
+ }
+
+ defaultConfig {
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ compileOptions {
+ sourceCompatibility 1.8
+ targetCompatibility 1.8
+ }
+}
+
+dependencies {
+ implementation project(":app")
+}
diff --git a/android/rally/src/main/AndroidManifest.xml b/android/rally/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..0dd9f93
--- /dev/null
+++ b/android/rally/src/main/AndroidManifest.xml
@@ -0,0 +1,13 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:dist="http://schemas.android.com/apk/distribution"
+ package="com.example.gallery.rally">
+
+ <dist:module
+ dist:instant="false"
+ dist:title="@string/rallyName">
+ <dist:delivery>
+ <dist:on-demand />
+ </dist:delivery>
+ <dist:fusing dist:include="true" />
+ </dist:module>
+</manifest>
diff --git a/android/reference/build.gradle b/android/reference/build.gradle
new file mode 100644
index 0000000..4eb7e49
--- /dev/null
+++ b/android/reference/build.gradle
@@ -0,0 +1,46 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: "com.android.dynamic-feature"
+
+android {
+ compileSdkVersion 30
+
+ sourceSets {
+ applicationVariants.all { variant ->
+ main.assets.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_assets"
+ main.jniLibs.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_libs"
+ }
+ }
+
+ defaultConfig {
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ compileOptions {
+ sourceCompatibility 1.8
+ targetCompatibility 1.8
+ }
+}
+
+dependencies {
+ implementation project(":app")
+}
diff --git a/android/reference/src/main/AndroidManifest.xml b/android/reference/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..8ef8aa4
--- /dev/null
+++ b/android/reference/src/main/AndroidManifest.xml
@@ -0,0 +1,13 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:dist="http://schemas.android.com/apk/distribution"
+ package="com.example.gallery.reference">
+
+ <dist:module
+ dist:instant="false"
+ dist:title="@string/referenceName">
+ <dist:delivery>
+ <dist:on-demand />
+ </dist:delivery>
+ <dist:fusing dist:include="true" />
+ </dist:module>
+</manifest>
diff --git a/android/settings.gradle b/android/settings.gradle
index 7cb0e47..ac77366 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -1,4 +1,4 @@
-include ':app', ':crane'
+include ':app', ':crane', ':fortnightly', ':rally', ':shrine', ':cupertino', ':material', ':reference'
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
diff --git a/android/shrine/build.gradle b/android/shrine/build.gradle
new file mode 100644
index 0000000..4eb7e49
--- /dev/null
+++ b/android/shrine/build.gradle
@@ -0,0 +1,46 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: "com.android.dynamic-feature"
+
+android {
+ compileSdkVersion 30
+
+ sourceSets {
+ applicationVariants.all { variant ->
+ main.assets.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_assets"
+ main.jniLibs.srcDirs += "${project.buildDir}/intermediates/flutter/${variant.name}/deferred_libs"
+ }
+ }
+
+ defaultConfig {
+ minSdkVersion 16
+ targetSdkVersion 30
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ compileOptions {
+ sourceCompatibility 1.8
+ targetCompatibility 1.8
+ }
+}
+
+dependencies {
+ implementation project(":app")
+}
diff --git a/android/shrine/src/main/AndroidManifest.xml b/android/shrine/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a56b687
--- /dev/null
+++ b/android/shrine/src/main/AndroidManifest.xml
@@ -0,0 +1,13 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:dist="http://schemas.android.com/apk/distribution"
+ package="com.example.gallery.shrine">
+
+ <dist:module
+ dist:instant="false"
+ dist:title="@string/shrineName">
+ <dist:delivery>
+ <dist:on-demand />
+ </dist:delivery>
+ <dist:fusing dist:include="true" />
+ </dist:module>
+</manifest>
diff --git a/lib/deferred_widget.dart b/lib/deferred_widget.dart
index a1b7fc2..c6600bc 100644
--- a/lib/deferred_widget.dart
+++ b/lib/deferred_widget.dart
@@ -26,6 +26,7 @@
static final Set<LibraryLoader> _loadedModules = {};
static Future<void> preload(LibraryLoader loader) {
+ print('PRE_LOAD');
if (!_moduleLoaders.containsKey(loader)) {
_moduleLoaders[loader] = loader().then((dynamic _) {
_loadedModules.add(loader);
@@ -45,6 +46,7 @@
@override
void initState() {
+ print('INIT STATE');
/// If module was already loaded immediately create widget instead of
/// waiting for future or zone turn.
if (DeferredWidget._loadedModules.contains(widget.libraryLoader)) {
@@ -57,6 +59,7 @@
}
void _onLibraryLoaded() {
+ print('ON_LIB_LOADED');
setState(() {
_loadedCreator = widget.createWidget;
_loadedChild = _loadedCreator();
@@ -65,6 +68,7 @@
@override
Widget build(BuildContext context) {
+ print('BUILDING DEFERRED WIDGET');
/// If closure to create widget changed, create new instance, otherwise
/// treat as const Widget.
if (_loadedCreator != widget.createWidget && _loadedCreator != null) {
diff --git a/pubspec.lock b/pubspec.lock
index d43e023..8314192 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -387,7 +387,7 @@
name: process
url: "https://pub.dartlang.org"
source: hosted
- version: "4.2.0"
+ version: "4.2.1"
provider:
dependency: "direct main"
description:
@@ -609,7 +609,7 @@
name: web_benchmarks
url: "https://pub.dartlang.org"
source: hosted
- version: "0.0.4"
+ version: "0.0.5"
web_socket_channel:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index ff8dd3e..ed8ab41 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -90,6 +90,110 @@
- packages/flutter_gallery_assets/fonts/google_fonts/Raleway-SemiBold.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/Raleway-Regular.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/Raleway-Light.ttf
+ - name: fortnightly
+ libraries:
+ - package:gallery/studies/fortnightly/app.dart
+ assets:
+ - packages/flutter_gallery_assets/fortnightly/fortnightly_army.png
+ - packages/flutter_gallery_assets/fortnightly/fortnightly_bees.jpg
+ - packages/flutter_gallery_assets/fortnightly/fortnightly_chart.png
+ - packages/flutter_gallery_assets/fortnightly/fortnightly_fabrics.png
+ - packages/flutter_gallery_assets/fortnightly/fortnightly_feminists.jpg
+ - packages/flutter_gallery_assets/fortnightly/fortnightly_gas.png
+ - packages/flutter_gallery_assets/fortnightly/fortnightly_healthcare.jpg
+ - packages/flutter_gallery_assets/fortnightly/fortnightly_stocks.png
+ - packages/flutter_gallery_assets/fortnightly/fortnightly_title.png
+ - packages/flutter_gallery_assets/fortnightly/fortnightly_war.png
+ - packages/flutter_gallery_assets/fonts/google_fonts/Merriweather-Regular.ttf
+ - packages/flutter_gallery_assets/fonts/google_fonts/Merriweather-Light.ttf
+ - packages/flutter_gallery_assets/fonts/google_fonts/Merriweather-BoldItalic.ttf
+ - packages/flutter_gallery_assets/fonts/google_fonts/LibreFranklin-Regular.ttf
+ - packages/flutter_gallery_assets/fonts/google_fonts/LibreFranklin-ExtraBold.ttf
+ - packages/flutter_gallery_assets/fonts/google_fonts/LibreFranklin-Bold.ttf
+ - packages/flutter_gallery_assets/fonts/google_fonts/LibreFranklin-SemiBold.ttf
+ - packages/flutter_gallery_assets/fonts/google_fonts/LibreFranklin-Medium.ttf
+ - name: rally
+ libraries:
+ - package:gallery/studies/rally/app.dart
+ assets:
+ - packages/rally_assets/logo.png
+ - packages/rally_assets/thumb.png
+ - packages/flutter_gallery_assets/fonts/google_fonts/Eczar-Regular.ttf
+ - packages/flutter_gallery_assets/fonts/google_fonts/Eczar-SemiBold.ttf
+ - name: shrine
+ libraries:
+ - package:gallery/studies/shrine/app.dart
+ assets:
+ - packages/shrine_images/diamond.png
+ - packages/shrine_images/slanted_menu.png
+ - packages/shrine_images/0-0.jpg
+ - packages/shrine_images/1-0.jpg
+ - packages/shrine_images/2-0.jpg
+ - packages/shrine_images/3-0.jpg
+ - packages/shrine_images/4-0.jpg
+ - packages/shrine_images/5-0.jpg
+ - packages/shrine_images/6-0.jpg
+ - packages/shrine_images/7-0.jpg
+ - packages/shrine_images/8-0.jpg
+ - packages/shrine_images/9-0.jpg
+ - packages/shrine_images/10-0.jpg
+ - packages/shrine_images/11-0.jpg
+ - packages/shrine_images/12-0.jpg
+ - packages/shrine_images/13-0.jpg
+ - packages/shrine_images/14-0.jpg
+ - packages/shrine_images/15-0.jpg
+ - packages/shrine_images/16-0.jpg
+ - packages/shrine_images/17-0.jpg
+ - packages/shrine_images/18-0.jpg
+ - packages/shrine_images/19-0.jpg
+ - packages/shrine_images/20-0.jpg
+ - packages/shrine_images/21-0.jpg
+ - packages/shrine_images/22-0.jpg
+ - packages/shrine_images/23-0.jpg
+ - packages/shrine_images/24-0.jpg
+ - packages/shrine_images/25-0.jpg
+ - packages/shrine_images/26-0.jpg
+ - packages/shrine_images/27-0.jpg
+ - packages/shrine_images/28-0.jpg
+ - packages/shrine_images/29-0.jpg
+ - packages/shrine_images/30-0.jpg
+ - packages/shrine_images/31-0.jpg
+ - packages/shrine_images/32-0.jpg
+ - packages/shrine_images/33-0.jpg
+ - packages/shrine_images/34-0.jpg
+ - packages/shrine_images/35-0.jpg
+ - packages/shrine_images/36-0.jpg
+ - packages/shrine_images/37-0.jpg
+ - packages/flutter_gallery_assets/fonts/google_fonts/Rubik-Bold.ttf
+ - packages/flutter_gallery_assets/fonts/google_fonts/Rubik-Medium.ttf
+ - packages/flutter_gallery_assets/fonts/google_fonts/Rubik-Regular.ttf
+ - name: cupertino
+ libraries:
+ - package:gallery/demos/cupertino/cupertino_demos.dart
+ - name: material
+ libraries:
+ - package:gallery/demos/material/material_demos.dart
+ assets:
+ - packages/flutter_gallery_assets/assets/demos/bottom_navigation_background.png
+ - packages/flutter_gallery_assets/places/india_chennai_flower_market.png
+ - packages/flutter_gallery_assets/places/india_thanjavur_market.png
+ - packages/flutter_gallery_assets/places/india_tanjore_bronze_works.png
+ - packages/flutter_gallery_assets/places/india_tanjore_market_merchant.png
+ - packages/flutter_gallery_assets/places/india_tanjore_thanjavur_temple.png
+ - packages/flutter_gallery_assets/places/india_pondicherry_salt_farm.png
+ - packages/flutter_gallery_assets/places/india_chennai_highway.png
+ - packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
+ - packages/flutter_gallery_assets/places/india_tanjore_thanjavur_temple_carvings.png
+ - packages/flutter_gallery_assets/places/india_chettinad_produce.png
+ - packages/flutter_gallery_assets/places/india_tanjore_market_technology.png
+ - packages/flutter_gallery_assets/places/india_pondicherry_beach.png
+ - packages/flutter_gallery_assets/places/india_pondicherry_fisherman.png
+ # This component includes libraries from multiple loading units:
+ - name: reference
+ libraries:
+ - package:gallery/demos/reference/motion_demo_container_transition.dart
+ - package:gallery/demos/reference/colors_demo.dart
+ - package:gallery/demos/reference/transformations_demo.dart
assets:
- packages/flutter_gallery_assets/assets/studies/shrine_card_dark.png
@@ -109,30 +213,16 @@
- packages/flutter_gallery_assets/assets/icons/cupertino/cupertino.png
- packages/flutter_gallery_assets/assets/icons/material/material.png
- packages/flutter_gallery_assets/assets/icons/reference/reference.png
- - packages/flutter_gallery_assets/assets/demos/bottom_navigation_background.png
- packages/flutter_gallery_assets/fonts/GalleryIcons.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/Merriweather-Regular.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/Eczar-Regular.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/Montserrat-Medium.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/Rubik-Bold.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/Merriweather-Light.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/RobotoCondensed-Bold.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/LibreFranklin-Regular.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/RobotoMono-Regular.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/LibreFranklin-ExtraBold.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/LibreFranklin-Bold.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/Oswald-SemiBold.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/Oswald-Medium.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/LibreFranklin-SemiBold.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/Montserrat-Bold.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/Merriweather-BoldItalic.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/Rubik-Medium.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/Montserrat-SemiBold.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/RobotoCondensed-Regular.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/LibreFranklin-Medium.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/Montserrat-Regular.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/Rubik-Regular.ttf
- - packages/flutter_gallery_assets/fonts/google_fonts/Eczar-SemiBold.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/WorkSans-Regular.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/WorkSans-Medium.ttf
- packages/flutter_gallery_assets/fonts/google_fonts/WorkSans-Bold.ttf
@@ -176,19 +266,6 @@
- packages/flutter_gallery_assets/reply/icons/twotone_star.png
- packages/flutter_gallery_assets/reply/icons/twotone_stars.png
- packages/flutter_gallery_assets/reply/reply_logo.png
- - packages/flutter_gallery_assets/places/india_chennai_flower_market.png
- - packages/flutter_gallery_assets/places/india_thanjavur_market.png
- - packages/flutter_gallery_assets/places/india_tanjore_bronze_works.png
- - packages/flutter_gallery_assets/places/india_tanjore_market_merchant.png
- - packages/flutter_gallery_assets/places/india_tanjore_thanjavur_temple.png
- - packages/flutter_gallery_assets/places/india_pondicherry_salt_farm.png
- - packages/flutter_gallery_assets/places/india_chennai_highway.png
- - packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
- - packages/flutter_gallery_assets/places/india_tanjore_thanjavur_temple_carvings.png
- - packages/flutter_gallery_assets/places/india_chettinad_produce.png
- - packages/flutter_gallery_assets/places/india_tanjore_market_technology.png
- - packages/flutter_gallery_assets/places/india_pondicherry_beach.png
- - packages/flutter_gallery_assets/places/india_pondicherry_fisherman.png
- packages/flutter_gallery_assets/placeholders/avatar_logo.png
- packages/flutter_gallery_assets/placeholders/placeholder_image.png
- packages/flutter_gallery_assets/splash_effects/splash_effect_1.gif
@@ -201,48 +278,6 @@
- packages/flutter_gallery_assets/splash_effects/splash_effect_8.gif
- packages/flutter_gallery_assets/splash_effects/splash_effect_9.gif
- packages/flutter_gallery_assets/splash_effects/splash_effect_10.gif
- - packages/rally_assets/logo.png
- - packages/rally_assets/thumb.png
- - packages/shrine_images/diamond.png
- - packages/shrine_images/slanted_menu.png
- - packages/shrine_images/0-0.jpg
- - packages/shrine_images/1-0.jpg
- - packages/shrine_images/2-0.jpg
- - packages/shrine_images/3-0.jpg
- - packages/shrine_images/4-0.jpg
- - packages/shrine_images/5-0.jpg
- - packages/shrine_images/6-0.jpg
- - packages/shrine_images/7-0.jpg
- - packages/shrine_images/8-0.jpg
- - packages/shrine_images/9-0.jpg
- - packages/shrine_images/10-0.jpg
- - packages/shrine_images/11-0.jpg
- - packages/shrine_images/12-0.jpg
- - packages/shrine_images/13-0.jpg
- - packages/shrine_images/14-0.jpg
- - packages/shrine_images/15-0.jpg
- - packages/shrine_images/16-0.jpg
- - packages/shrine_images/17-0.jpg
- - packages/shrine_images/18-0.jpg
- - packages/shrine_images/19-0.jpg
- - packages/shrine_images/20-0.jpg
- - packages/shrine_images/21-0.jpg
- - packages/shrine_images/22-0.jpg
- - packages/shrine_images/23-0.jpg
- - packages/shrine_images/24-0.jpg
- - packages/shrine_images/25-0.jpg
- - packages/shrine_images/26-0.jpg
- - packages/shrine_images/27-0.jpg
- - packages/shrine_images/28-0.jpg
- - packages/shrine_images/29-0.jpg
- - packages/shrine_images/30-0.jpg
- - packages/shrine_images/31-0.jpg
- - packages/shrine_images/32-0.jpg
- - packages/shrine_images/33-0.jpg
- - packages/shrine_images/34-0.jpg
- - packages/shrine_images/35-0.jpg
- - packages/shrine_images/36-0.jpg
- - packages/shrine_images/37-0.jpg
generate: true
uses-material-design: true