Merge branch 'main' into fix-image-loading-error

pull/2769/head
Eric Windmill 3 weeks ago committed by GitHub
commit c41ac945dc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -20,7 +20,7 @@ _See also: [Flutter's code of conduct]_
## Is this the right place for your sample?
In most cases, if you've written a great sample app, it should be maintained
in your own repoistory. You can maintain your sample app in your own repo
in your own repository. You can maintain your sample app in your own repo
(or with another source control provider) and still be as important a part of
the Flutter-verse as anything you see here.
@ -99,7 +99,7 @@ Validate your idea against the following criteria:
1. **The sample solves a single problem or set of tightly coupled problems.** <br/>
If not, you're either writing a Demo app or an extended sample. These might
still be appropriate for the samples repos, but need to be justified.
still be appropriate for the sample repos, but need to be justified.
2. **The target audience for the sample isnt beginners.**
3. **The sample code isnt so complex that it needs video or text explanation.** <br />
@ -115,10 +115,10 @@ Validate your idea against the following criteria:
6. **The topic doesnt have crossover with any existing samples.** <br />
If it does, ensure that it wouldn't be better to update the existing sample.
## What are your ongoing maintenance resposibilities?
## What are your ongoing maintenance responsibilities?
All sample code has an unbound maintenance cost. If you cannot commit to maintaining a sample
(for the forseeable future, barring changes in life circumstances), then you should talk to the
(for the foreseeable future, barring changes in life circumstances), then you should talk to the
[primary maintainers] of this project, particularly @ericwindmill, before submitting a PR.
Any new sample **must** have a CODEOWNER, and that owner is most likely you (the author).

@ -5,7 +5,7 @@ Embeds a full screen instance of Flutter into an existing iOS or Android app.
## Description
These apps showcase a relatively straightforward integration of
`flutter_module`:
`flutter_module_fullscreen`:
* The Flutter module is built along with the app when the app is built.
* The Flutter engine is warmed up at app launch.
@ -27,7 +27,7 @@ you're building for both iOS and Android, with both toolchains installed):
#!/bin/bash
set -e
cd flutter_module/
cd flutter_module_fullscreen/
flutter pub get
# For Android builds:

@ -3,5 +3,5 @@ rootProject.name='AndroidFullScreen'
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir.parentFile,
'flutter_module/.android/include_flutter.groovy'
'flutter_module_fullscreen/.android/include_flutter.groovy'
))

@ -1,4 +1,4 @@
# flutter_module
# flutter_module_fullscreen
An example Flutter module used in the Flutter add-to-app samples. For more
information on how to use it, see the [README.md](../README.md) parent

@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
@ -175,11 +175,11 @@
buildConfigurationList = 26DF66FC233136470076ACA6 /* Build configuration list for PBXNativeTarget "IOSFullScreen" */;
buildPhases = (
9AB0355F19DEFA7A4ECCC777 /* [CP] Check Pods Manifest.lock */,
79D4306CA9A49DFDB68D2B71 /* [CP-User] Run Flutter Build flutter_module Script */,
79D4306CA9A49DFDB68D2B71 /* [CP-User] Run Flutter Build flutter_module_fullscreen Script */,
26DF66D0233136460076ACA6 /* Sources */,
26DF66D1233136460076ACA6 /* Frameworks */,
26DF66D2233136460076ACA6 /* Resources */,
D1C2795C35803D65EBC8B371 /* [CP] Embed Pods Frameworks */,
B9B95ECDA31F21359E3D008B /* [CP-User] Embed Flutter Build flutter_module_fullscreen Script */,
);
buildRules = (
);
@ -321,15 +321,15 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
79D4306CA9A49DFDB68D2B71 /* [CP-User] Run Flutter Build flutter_module Script */ = {
79D4306CA9A49DFDB68D2B71 /* [CP-User] Run Flutter Build flutter_module_fullscreen Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
name = "[CP-User] Run Flutter Build flutter_module Script";
name = "[CP-User] Run Flutter Build flutter_module_fullscreen Script";
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "set -e\nset -u\nsource \"${SRCROOT}/../flutter_module/.ios/Flutter/flutter_export_environment.sh\"\nexport VERBOSE_SCRIPT_LOGGING=1 && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/xcode_backend.sh build";
shellScript = "set -e\nset -u\nsource \"${SRCROOT}/../flutter_module_fullscreen/.ios/Flutter/flutter_export_environment.sh\"\nexport VERBOSE_SCRIPT_LOGGING=1 && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/xcode_backend.sh build";
};
9AB0355F19DEFA7A4ECCC777 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
@ -353,6 +353,16 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
B9B95ECDA31F21359E3D008B /* [CP-User] Embed Flutter Build flutter_module_fullscreen Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
name = "[CP-User] Embed Flutter Build flutter_module_fullscreen Script";
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "set -e\nset -u\nsource \"${SRCROOT}/../flutter_module_fullscreen/.ios/Flutter/flutter_export_environment.sh\"\nexport VERBOSE_SCRIPT_LOGGING=1 && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/xcode_backend.sh embed_and_thin";
};
C73209EF6AC199B8584ED9E2 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -375,23 +385,6 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
D1C2795C35803D65EBC8B371 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-IOSFullScreen/Pods-IOSFullScreen-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-IOSFullScreen/Pods-IOSFullScreen-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-IOSFullScreen/Pods-IOSFullScreen-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@ -578,6 +571,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = "IOSFullScreen/Info-$(CONFIGURATION).plist";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@ -596,6 +590,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = "IOSFullScreen/Info-$(CONFIGURATION).plist";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",

@ -1,7 +1,7 @@
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
flutter_application_path = '../flutter_module'
flutter_application_path = '../flutter_module_fullscreen'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
target 'IOSFullScreen' do

@ -1,3 +1,10 @@
plugins {
id "com.android.application"
id "kotlin-android"
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
@ -21,12 +28,9 @@ if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 31
namespace "com.example.splash_screen_sample"
compileSdkVersion 34
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@ -35,12 +39,21 @@ android {
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.splash_screen_sample"
minSdkVersion 21
targetSdkVersion 30
minSdkVersion flutter.minSdkVersion
targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
@ -55,7 +68,6 @@ flutter {
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "androidx.core:core-splashscreen:1.0.0-alpha02"
implementation "androidx.core:core:1.5.0-alpha05"
implementation "androidx.core:core-ktx:1.6.0"

@ -203,9 +203,9 @@ class MainActivity : FlutterActivity() {
}
private companion object {
const val SPLASHSCREEN_ALPHA_ANIMATION_DURATION = 500 as Long
const val SPLASHSCREEN_TY_ANIMATION_DURATION = 500 as Long
const val SPLASHSCREEN_FINAL_ANIMATION_ALPHA_ANIMATION_DURATION = 250 as Long
const val WAIT_FOR_AVD_TO_FINISH = false
const val SPLASHSCREEN_ALPHA_ANIMATION_DURATION = 500L
const val SPLASHSCREEN_TY_ANIMATION_DURATION = 500L
const val SPLASHSCREEN_FINAL_ANIMATION_ALPHA_ANIMATION_DURATION = 250L
const val WAIT_FOR_AVD_TO_FINISH = false
}
}

@ -1,16 +1,3 @@
buildscript {
ext.kotlin_version = '1.5.31'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
@ -18,12 +5,14 @@ allprojects {
}
}
rootProject.buildDir = '../build'
rootProject.buildDir = "../build"
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
subprojects {
project.evaluationDependsOn(":app")
}
task clean(type: Delete) {
tasks.register("clean", Delete) {
delete rootProject.buildDir
}

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip

@ -1,11 +1,25 @@
include ':app'
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}()
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.6.0" apply false
id "org.jetbrains.kotlin.android" version "2.1.0" apply false
}
include ":app"

@ -43,6 +43,8 @@ class _LoginScreenState extends State<LoginScreen> {
@override
void dispose() {
_email.dispose();
_password.dispose();
widget.viewModel.login.removeListener(_onResult);
super.dispose();
}

@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip

@ -19,8 +19,8 @@ pluginManagement {
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
id "com.android.application" version "8.9.1" apply false
id "org.jetbrains.kotlin.android" version "2.1.0" apply false
}
include ":app"

Loading…
Cancel
Save