├── examples └── oauth │ ├── README.md │ ├── client │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── android │ │ ├── .gitignore │ │ ├── app │ │ │ ├── build.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── oauth │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res │ │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ │ └── profile │ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── ios │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Podfile │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ └── LaunchImage.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ └── README.md │ │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── Runner-Bridging-Header.h │ ├── lib │ │ ├── main.dart │ │ ├── models │ │ │ └── token.dart │ │ └── pages │ │ │ ├── login.dart │ │ │ └── oauth.dart │ ├── pubspec.lock │ ├── pubspec.yaml │ └── test │ │ └── widget_test.dart │ └── server │ ├── .dart_tool │ └── package_config.json │ ├── .gitignore │ ├── .travis.yml │ ├── .vscode │ └── launch.json │ ├── README.md │ ├── analysis_options.yaml │ ├── bin │ └── main.dart │ ├── config.src.yaml │ ├── config.yaml │ ├── lib │ ├── channel.dart │ ├── controllers │ │ ├── oauth_redirect_renderer.dart │ │ ├── protected_controller.dart │ │ └── register_controller.dart │ ├── models │ │ └── user.dart │ └── oauth.dart │ ├── migrations │ └── 00000001_initial.migration.dart │ ├── pubspec.lock │ ├── pubspec.yaml │ ├── templates │ └── auth.mustache │ └── test │ ├── example_test.dart │ └── harness │ └── app.dart └── simple_end_to_end ├── 01-flutter-create └── app │ ├── .gitignore │ ├── .metadata │ ├── LICENSE │ ├── README.md │ ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── minimalist_flutter_template │ │ │ │ │ └── MainActivity.kt │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle │ ├── assets │ └── fonts │ │ ├── OpenSans-Bold.ttf │ │ ├── OpenSans-ExtraBold.ttf │ │ ├── OpenSans-Light.ttf │ │ └── OpenSans-Regular.ttf │ ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ └── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ └── README.md │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── Runner-Bridging-Header.h │ ├── lib │ ├── app.dart │ ├── main.dart │ └── screens │ │ └── home.dart │ ├── local.env │ ├── pubspec.lock │ ├── pubspec.yaml │ └── test │ └── widget_test.dart ├── 02-server-intro ├── app │ ├── .gitignore │ ├── .metadata │ ├── LICENSE │ ├── README.md │ ├── android │ │ ├── .gitignore │ │ ├── app │ │ │ ├── build.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── minimalist_flutter_template │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res │ │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ │ └── profile │ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── assets │ │ └── fonts │ │ │ ├── OpenSans-Bold.ttf │ │ │ ├── OpenSans-ExtraBold.ttf │ │ │ ├── OpenSans-Light.ttf │ │ │ └── OpenSans-Regular.ttf │ ├── ios │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ └── LaunchImage.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ └── README.md │ │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── Runner-Bridging-Header.h │ ├── lib │ │ ├── app.dart │ │ ├── main.dart │ │ └── screens │ │ │ └── home.dart │ ├── local.env │ ├── pubspec.lock │ ├── pubspec.yaml │ └── test │ │ └── widget_test.dart └── server │ ├── .gitignore │ ├── .travis.yml │ ├── Dockerfile │ ├── README.md │ ├── analysis_options.yaml │ ├── bin │ └── main.dart │ ├── config.src.yaml │ ├── config.yaml │ ├── lib │ ├── channel.dart │ └── server.dart │ ├── pubspec.lock │ ├── pubspec.yaml │ └── test │ ├── example_test.dart │ └── harness │ └── app.dart ├── 03-flutter-http-client ├── app │ ├── .gitignore │ ├── .metadata │ ├── LICENSE │ ├── README.md │ ├── android │ │ ├── .gitignore │ │ ├── app │ │ │ ├── build.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── minimalist_flutter_template │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res │ │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ │ └── profile │ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── assets │ │ └── fonts │ │ │ ├── OpenSans-Bold.ttf │ │ │ ├── OpenSans-ExtraBold.ttf │ │ │ ├── OpenSans-Light.ttf │ │ │ └── OpenSans-Regular.ttf │ ├── ios │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ └── LaunchImage.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ └── README.md │ │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── Runner-Bridging-Header.h │ ├── lib │ │ ├── app.dart │ │ ├── main.dart │ │ └── screens │ │ │ └── home.dart │ ├── local.env │ ├── pubspec.lock │ ├── pubspec.yaml │ └── test │ │ └── widget_test.dart └── server │ ├── .gitignore │ ├── .travis.yml │ ├── Dockerfile │ ├── README.md │ ├── analysis_options.yaml │ ├── bin │ └── main.dart │ ├── config.src.yaml │ ├── config.yaml │ ├── lib │ ├── channel.dart │ └── server.dart │ ├── pubspec.lock │ ├── pubspec.yaml │ └── test │ ├── example_test.dart │ └── harness │ └── app.dart └── 04-deploying-server ├── app ├── .gitignore ├── .metadata ├── LICENSE ├── README.md ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── minimalist_flutter_template │ │ │ │ │ └── MainActivity.kt │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── assets │ └── fonts │ │ ├── OpenSans-Bold.ttf │ │ ├── OpenSans-ExtraBold.ttf │ │ ├── OpenSans-Light.ttf │ │ └── OpenSans-Regular.ttf ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ └── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ └── README.md │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── Runner-Bridging-Header.h ├── lib │ ├── app.dart │ ├── main.dart │ └── screens │ │ └── home.dart ├── local.env ├── pubspec.lock ├── pubspec.yaml └── test │ └── widget_test.dart └── server ├── .gitignore ├── .travis.yml ├── Dockerfile ├── README.md ├── analysis_options.yaml ├── bin └── main.dart ├── config.src.yaml ├── config.yaml ├── lib ├── channel.dart └── server.dart ├── pubspec.lock ├── pubspec.yaml └── test ├── example_test.dart └── harness └── app.dart /examples/oauth/README.md: -------------------------------------------------------------------------------- 1 | # OAuth Introduction 2 | 3 | This example presents a proof of concept for folks interested in using OAuth's [Auth Code grant](https://tools.ietf.org/html/rfc6749#section-1.3.1) with Flutter and Aqueduct. 4 | 5 | ## For Complete Newbies 6 | 7 | Watch [this video](https://www.youtube.com/watch?v=t18YB3xDfXI) first (ignore the last part on Open ID Connect). This will give folks a good, plain english intro to OAuth. 8 | 9 | ## Why Should I Care About OAuth as a Flutter Developer? 10 | 11 | ## What Will I Learn with This Example? 12 | 13 | ## Resources 14 | 15 | ## TODO 16 | 17 | - Use [](https://github.com/dart-lang/oauth2) 18 | -------------------------------------------------------------------------------- /examples/oauth/client/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Exceptions to above rules. 44 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 45 | -------------------------------------------------------------------------------- /examples/oauth/client/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /examples/oauth/client/README.md: -------------------------------------------------------------------------------- 1 | # oauth 2 | 3 | ## TODO 4 | 5 | - If using iOS, set up properly (https://pub.dev/packages/flutter_webview_plugin) 6 | -------------------------------------------------------------------------------- /examples/oauth/client/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /examples/oauth/client/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /examples/oauth/client/android/app/src/main/kotlin/com/example/oauth/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.oauth 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /examples/oauth/client/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /examples/oauth/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/oauth/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/oauth/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/oauth/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/oauth/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/oauth/client/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /examples/oauth/client/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /examples/oauth/client/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /examples/oauth/client/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /examples/oauth/client/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /examples/oauth/client/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 6 | 7 | project 'Runner', { 8 | 'Debug' => :debug, 9 | 'Profile' => :release, 10 | 'Release' => :release, 11 | } 12 | 13 | def flutter_root 14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) 15 | unless File.exist?(generated_xcode_build_settings_path) 16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" 17 | end 18 | 19 | File.foreach(generated_xcode_build_settings_path) do |line| 20 | matches = line.match(/FLUTTER_ROOT\=(.*)/) 21 | return matches[1].strip if matches 22 | end 23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" 24 | end 25 | 26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) 27 | 28 | flutter_ios_podfile_setup 29 | 30 | target 'Runner' do 31 | use_frameworks! 32 | use_modular_headers! 33 | 34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) 35 | end 36 | 37 | post_install do |installer| 38 | installer.pods_project.targets.each do |target| 39 | flutter_additional_ios_build_settings(target) 40 | end 41 | end 42 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/examples/oauth/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | oauth 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /examples/oauth/client/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /examples/oauth/client/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'pages/login.dart'; 3 | import 'pages/oauth.dart'; 4 | 5 | void main() { 6 | runApp(MyApp()); 7 | } 8 | 9 | class MyApp extends StatelessWidget { 10 | // This widget is the root of your application. 11 | @override 12 | Widget build(BuildContext context) { 13 | return MaterialApp( 14 | title: 'Flutter Demo', 15 | theme: ThemeData( 16 | primarySwatch: Colors.blue, 17 | visualDensity: VisualDensity.adaptivePlatformDensity, 18 | ), 19 | home: LoginPage(), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /examples/oauth/client/lib/models/token.dart: -------------------------------------------------------------------------------- 1 | class Token { 2 | String accessToken; 3 | String refreshToken; 4 | 5 | Token(this.accessToken, this.refreshToken); 6 | } 7 | -------------------------------------------------------------------------------- /examples/oauth/client/lib/pages/login.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:oauth/pages/oauth.dart'; 3 | import '../models/token.dart'; 4 | 5 | class LoginPage extends StatefulWidget { 6 | LoginPage({Key key}) : super(key: key); 7 | 8 | @override 9 | _LoginPageState createState() => _LoginPageState(); 10 | } 11 | 12 | class _LoginPageState extends State { 13 | String _accessToken; 14 | String _refreshToken; 15 | 16 | _LoginPageState(); 17 | 18 | @override 19 | Widget build(BuildContext context) { 20 | return Scaffold( 21 | appBar: AppBar( 22 | title: Text("OAuth Example"), 23 | ), 24 | body: Center( 25 | child: Column( 26 | mainAxisAlignment: MainAxisAlignment.center, 27 | children: [ 28 | RaisedButton( 29 | onPressed: () => presentOAuthForAccessToken(context), 30 | child: const Text('Login via nickmanning.dev', 31 | style: TextStyle(fontSize: 20)), 32 | ), 33 | Text("Access token is: $_accessToken"), 34 | Text("Refresh token is: $_refreshToken"), 35 | ], 36 | ), 37 | ), 38 | ); 39 | } 40 | 41 | presentOAuthForAccessToken(BuildContext context) async { 42 | final Token token = await Navigator.push( 43 | context, 44 | MaterialPageRoute( 45 | builder: (context) => OAuthPage(), 46 | )); 47 | if (token == null) { 48 | setState(() { 49 | _accessToken = "error"; 50 | _refreshToken = "error"; 51 | }); 52 | } else { 53 | setState(() { 54 | _accessToken = token.accessToken; 55 | _refreshToken = token.refreshToken; 56 | }); 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /examples/oauth/client/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:oauth/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /examples/oauth/server/.gitignore: -------------------------------------------------------------------------------- 1 | .buildlog 2 | .pub/ 3 | build/ 4 | packages 5 | .packages 6 | *.dart.js 7 | *.js_ 8 | *.js.deps 9 | *.js.map 10 | workspace.xml 11 | Dart_Packages.xml 12 | .DS_Store 13 | .idea/ 14 | *.aqueduct.pid -------------------------------------------------------------------------------- /examples/oauth/server/.travis.yml: -------------------------------------------------------------------------------- 1 | language: dart 2 | script: pub run test -r expanded 3 | branches: 4 | only: 5 | - master -------------------------------------------------------------------------------- /examples/oauth/server/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Dart", 9 | "program": "bin/main.dart", 10 | "request": "launch", 11 | "type": "dart", 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /examples/oauth/server/bin/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:oauth/oauth.dart'; 2 | 3 | Future main() async { 4 | final app = Application() 5 | ..options.configurationFilePath = "config.yaml" 6 | ..options.port = 8888; 7 | 8 | final count = Platform.numberOfProcessors ~/ 2; 9 | await app.start(numberOfInstances: count > 0 ? count : 1); 10 | 11 | print("Application started on port: ${app.options.port}."); 12 | print("Use Ctrl-C (SIGINT) to stop running the application."); 13 | } -------------------------------------------------------------------------------- /examples/oauth/server/config.src.yaml: -------------------------------------------------------------------------------- 1 | # used for tests 2 | database: 3 | username: postgres 4 | password: "1234" 5 | host: localhost 6 | port: 5432 7 | databaseName: oauth -------------------------------------------------------------------------------- /examples/oauth/server/config.yaml: -------------------------------------------------------------------------------- 1 | database: 2 | username: postgres 3 | password: "1234" 4 | host: localhost 5 | port: 5432 6 | databaseName: oauth -------------------------------------------------------------------------------- /examples/oauth/server/lib/controllers/oauth_redirect_renderer.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:io'; 3 | import 'package:aqueduct/aqueduct.dart'; 4 | import 'package:mustache/mustache.dart'; 5 | 6 | class OAuthRedirectRenderer extends AuthRedirectControllerDelegate { 7 | @override 8 | Future render(AuthRedirectController forController, Uri requestUri, 9 | String responseType, String clientID, String state, String scope) { 10 | final templateContents = File("templates/auth.mustache").readAsStringSync(); 11 | 12 | final template = Template(templateContents); 13 | 14 | final rendered = template.renderString({}); 15 | 16 | return Future.value(rendered); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /examples/oauth/server/lib/controllers/protected_controller.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'package:aqueduct/aqueduct.dart'; 3 | 4 | class ProtectedController extends ResourceController { 5 | @Operation.get() 6 | Future somethingProtected() async { 7 | return Response.ok({"something": "protected"}); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /examples/oauth/server/lib/models/user.dart: -------------------------------------------------------------------------------- 1 | import 'package:aqueduct/aqueduct.dart'; 2 | import 'package:aqueduct/managed_auth.dart'; 3 | 4 | class User extends ManagedObject<_User> 5 | implements _User, ManagedAuthResourceOwner<_User> { 6 | @Serialize(input: true, output: false) 7 | String password; 8 | } 9 | 10 | class _User extends ResourceOwnerTableDefinition { 11 | @Column(unique: true) 12 | String email; 13 | } 14 | -------------------------------------------------------------------------------- /examples/oauth/server/lib/oauth.dart: -------------------------------------------------------------------------------- 1 | /// oauth 2 | /// 3 | /// A Aqueduct web server. 4 | library oauth; 5 | 6 | export 'dart:async'; 7 | export 'dart:io'; 8 | 9 | export 'package:aqueduct/aqueduct.dart'; 10 | 11 | export 'channel.dart'; 12 | -------------------------------------------------------------------------------- /examples/oauth/server/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: oauth 2 | description: An empty Aqueduct application. 3 | version: 0.0.1 4 | author: stable|kernel 5 | 6 | environment: 7 | sdk: ">=2.0.0 <3.0.0" 8 | 9 | dependencies: 10 | aqueduct: ^4.0.0-b1 11 | mustache: ^1.1.1 12 | 13 | dev_dependencies: 14 | test: ^1.0.0 15 | aqueduct_test: ^2.0.0-b1 -------------------------------------------------------------------------------- /examples/oauth/server/templates/auth.mustache: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 |
10 | 11 |
12 | 13 |
14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 |
24 | 25 | -------------------------------------------------------------------------------- /examples/oauth/server/test/example_test.dart: -------------------------------------------------------------------------------- 1 | import 'harness/app.dart'; 2 | 3 | Future main() async { 4 | final harness = Harness()..install(); 5 | 6 | test("GET /example returns 200 {'key': 'value'}", () async { 7 | expectResponse(await harness.agent.get("/example"), 200, body: {"key": "value"}); 8 | }); 9 | } 10 | -------------------------------------------------------------------------------- /examples/oauth/server/test/harness/app.dart: -------------------------------------------------------------------------------- 1 | import 'package:oauth/oauth.dart'; 2 | import 'package:aqueduct_test/aqueduct_test.dart'; 3 | 4 | export 'package:oauth/oauth.dart'; 5 | export 'package:aqueduct_test/aqueduct_test.dart'; 6 | export 'package:test/test.dart'; 7 | export 'package:aqueduct/aqueduct.dart'; 8 | 9 | /// A testing harness for oauth. 10 | /// 11 | /// A harness for testing an aqueduct application. Example test file: 12 | /// 13 | /// void main() { 14 | /// Harness harness = Harness()..install(); 15 | /// 16 | /// test("GET /path returns 200", () async { 17 | /// final response = await harness.agent.get("/path"); 18 | /// expectResponse(response, 200); 19 | /// }); 20 | /// } 21 | /// 22 | class Harness extends TestHarness { 23 | @override 24 | Future onSetUp() async { 25 | 26 | } 27 | 28 | @override 29 | Future onTearDown() async { 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Exceptions to above rules. 44 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 45 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Nick Manning 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/README.md: -------------------------------------------------------------------------------- 1 | # minimalist_flutter_template 2 | 3 | A new Flutter project. 4 | 5 | ## How We Set Up This App 6 | 7 | Below are the steps that were taken to build this example project using the very simple flutter template at `https://github.com/seenickcode/minimalist_flutter_template` (using the `flutter_create` package). 8 | 9 | ### Basic Set Up 10 | 11 | 1. Building the app. 12 | 13 | How we created this app: `pub global activate flutter_create`. 14 | 15 | Then: `flutter_create -a -u https://github.com/seenickcode/minimalist_flutter_template` 16 | 17 | 2. Directory structure. 18 | 19 | We're separating the home screen from `main.dart` 20 | 21 | 3. Fonts. 22 | 23 | Including the `assets` diretory in `pubspec.yaml` and citing the fonts we'd like. Using the `theme` property of `MaterialApp` in `main.dart` to use our font. 24 | 25 | 4. Settting up our `home.dart` file: 26 | 27 | a. We import the `http` package in `pubspec.yaml` 28 | b. Then, we fetch some data from `postman-echo.com` and display it on screen. 29 | 30 | ### Setting Up Basic Integration tests 31 | 32 | We create a `test/integration` directory. Then add the following to `dev_dependencies` in `pubspec.yaml`: 33 | 34 | ``` 35 | flutter_driver: 36 | sdk: flutter 37 | ``` 38 | 39 | ## Next Up 40 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion 28 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 41 | applicationId "com.example.minimalist_flutter_template" 42 | minSdkVersion 16 43 | targetSdkVersion 28 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | } 47 | 48 | buildTypes { 49 | release { 50 | // TODO: Add your own signing config for the release build. 51 | // Signing with the debug keys for now, so `flutter run --release` works. 52 | signingConfig signingConfigs.debug 53 | } 54 | } 55 | } 56 | 57 | flutter { 58 | source '../..' 59 | } 60 | 61 | dependencies { 62 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 63 | } 64 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/src/main/kotlin/com/example/minimalist_flutter_template/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.minimalist_flutter_template 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/assets/fonts/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/assets/fonts/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/assets/fonts/OpenSans-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/assets/fonts/OpenSans-ExtraBold.ttf -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/assets/fonts/OpenSans-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/assets/fonts/OpenSans-Light.ttf -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/assets/fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/assets/fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | app 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/lib/app.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'screens/home.dart'; 3 | 4 | class App extends StatelessWidget { 5 | // This widget is the root of your application. 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | title: 'Flutter Demo', 10 | theme: ThemeData( 11 | primarySwatch: Colors.blue, 12 | visualDensity: VisualDensity.adaptivePlatformDensity, 13 | fontFamily: 'Open Sans', 14 | ), 15 | home: Home(), 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'app.dart'; 3 | 4 | void main() async { 5 | runApp(App()); 6 | } 7 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/lib/screens/home.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Home extends StatefulWidget { 4 | Home({Key key}) : super(key: key); 5 | 6 | @override 7 | _HomeState createState() => _HomeState(); 8 | } 9 | 10 | class _HomeState extends State { 11 | String message = ""; 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return Scaffold( 16 | appBar: AppBar( 17 | title: Text("Example"), 18 | ), 19 | ); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/local.env: -------------------------------------------------------------------------------- 1 | API_BASE_URI=http://10.0.3.2:8888 -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: app 2 | description: A new Flutter project. 3 | 4 | publish_to: "none" # Remove this line if you wish to publish to pub.dev 5 | 6 | version: 1.0.0+1 7 | 8 | environment: 9 | sdk: ">=2.7.0 <3.0.0" 10 | 11 | dependencies: 12 | flutter: 13 | sdk: flutter 14 | 15 | dev_dependencies: 16 | flutter_test: 17 | sdk: flutter 18 | flutter_driver: 19 | sdk: flutter 20 | 21 | flutter: 22 | uses-material-design: true 23 | assets: 24 | - assets/fonts/ 25 | 26 | fonts: 27 | - family: Open Sans 28 | fonts: 29 | - asset: assets/fonts/OpenSans-Bold.ttf 30 | weight: 700 31 | - asset: assets/fonts/OpenSans-ExtraBold.ttf 32 | weight: 800 33 | - asset: assets/fonts/OpenSans-Light.ttf 34 | weight: 300 35 | - asset: assets/fonts/OpenSans-Regular.ttf 36 | weight: 400 37 | -------------------------------------------------------------------------------- /simple_end_to_end/01-flutter-create/app/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:app/app.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(App()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Exceptions to above rules. 44 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 45 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Nick Manning 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/README.md: -------------------------------------------------------------------------------- 1 | # minimalist_flutter_template 2 | 3 | A new Flutter project. 4 | 5 | ## How We Set Up This App 6 | 7 | Below are the steps that were taken to build this example project using the very simple flutter template at `https://github.com/seenickcode/minimalist_flutter_template` (using the `flutter_create` package). 8 | 9 | ### Basic Set Up 10 | 11 | 1. Building the app. 12 | 13 | How we created this app: `pub global activate flutter_create`. 14 | 15 | Then: `flutter_create -a -u https://github.com/seenickcode/minimalist_flutter_template` 16 | 17 | 2. Directory structure. 18 | 19 | We're separating the home screen from `main.dart` 20 | 21 | 3. Fonts. 22 | 23 | Including the `assets` diretory in `pubspec.yaml` and citing the fonts we'd like. Using the `theme` property of `MaterialApp` in `main.dart` to use our font. 24 | 25 | 4. Settting up our `home.dart` file: 26 | 27 | a. We import the `http` package in `pubspec.yaml` 28 | b. Then, we fetch some data from `postman-echo.com` and display it on screen. 29 | 30 | ### Setting Up Basic Integration tests 31 | 32 | We create a `test/integration` directory. Then add the following to `dev_dependencies` in `pubspec.yaml`: 33 | 34 | ``` 35 | flutter_driver: 36 | sdk: flutter 37 | ``` 38 | 39 | ## Next Up 40 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion 28 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 41 | applicationId "com.example.minimalist_flutter_template" 42 | minSdkVersion 16 43 | targetSdkVersion 28 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | } 47 | 48 | buildTypes { 49 | release { 50 | // TODO: Add your own signing config for the release build. 51 | // Signing with the debug keys for now, so `flutter run --release` works. 52 | signingConfig signingConfigs.debug 53 | } 54 | } 55 | } 56 | 57 | flutter { 58 | source '../..' 59 | } 60 | 61 | dependencies { 62 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 63 | } 64 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/src/main/kotlin/com/example/minimalist_flutter_template/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.minimalist_flutter_template 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/assets/fonts/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/assets/fonts/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/assets/fonts/OpenSans-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/assets/fonts/OpenSans-ExtraBold.ttf -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/assets/fonts/OpenSans-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/assets/fonts/OpenSans-Light.ttf -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/assets/fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/assets/fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | app 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/lib/app.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'screens/home.dart'; 3 | 4 | class App extends StatelessWidget { 5 | // This widget is the root of your application. 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | title: 'Flutter Demo', 10 | theme: ThemeData( 11 | primarySwatch: Colors.blue, 12 | visualDensity: VisualDensity.adaptivePlatformDensity, 13 | fontFamily: 'Open Sans', 14 | ), 15 | home: Home(), 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'app.dart'; 3 | 4 | void main() async { 5 | runApp(App()); 6 | } 7 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/lib/screens/home.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Home extends StatefulWidget { 4 | Home({Key key}) : super(key: key); 5 | 6 | @override 7 | _HomeState createState() => _HomeState(); 8 | } 9 | 10 | class _HomeState extends State { 11 | String message = ""; 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return Scaffold( 16 | appBar: AppBar( 17 | title: Text("Example"), 18 | ), 19 | ); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/local.env: -------------------------------------------------------------------------------- 1 | API_BASE_URI=http://10.0.3.2:8888 2 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: app 2 | description: A new Flutter project. 3 | 4 | publish_to: "none" # Remove this line if you wish to publish to pub.dev 5 | 6 | version: 1.0.0+1 7 | 8 | environment: 9 | sdk: ">=2.7.0 <3.0.0" 10 | 11 | dependencies: 12 | flutter: 13 | sdk: flutter 14 | 15 | dev_dependencies: 16 | flutter_test: 17 | sdk: flutter 18 | flutter_driver: 19 | sdk: flutter 20 | 21 | flutter: 22 | uses-material-design: true 23 | assets: 24 | - assets/fonts/ 25 | 26 | fonts: 27 | - family: Open Sans 28 | fonts: 29 | - asset: assets/fonts/OpenSans-Bold.ttf 30 | weight: 700 31 | - asset: assets/fonts/OpenSans-ExtraBold.ttf 32 | weight: 800 33 | - asset: assets/fonts/OpenSans-Light.ttf 34 | weight: 300 35 | - asset: assets/fonts/OpenSans-Regular.ttf 36 | weight: 400 37 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/app/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:app/app.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(App()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/.gitignore: -------------------------------------------------------------------------------- 1 | .buildlog 2 | .pub/ 3 | build/ 4 | packages 5 | .packages 6 | *.dart.js 7 | *.js_ 8 | *.js.deps 9 | *.js.map 10 | workspace.xml 11 | Dart_Packages.xml 12 | .DS_Store 13 | .idea/ 14 | *.aqueduct.pid 15 | .dart_tool 16 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/.travis.yml: -------------------------------------------------------------------------------- 1 | language: dart 2 | script: pub run test -r expanded 3 | branches: 4 | only: 5 | - master -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM google/dart 2 | 3 | WORKDIR /app 4 | ADD pubspec.* /app/ 5 | RUN pub get --no-precompile 6 | ADD . /app/ 7 | RUN pub get --offline --no-precompile 8 | 9 | WORKDIR /app 10 | 11 | # EXPOSE 8888 12 | # ENV PORT 8888 13 | 14 | CMD [] 15 | # ENTRYPOINT pub run aqueduct:aqueduct serve --port ${PORT} 16 | ENTRYPOINT ["/usr/bin/dart", "bin/main.dart"] 17 | 18 | # Service must listen to $PORT environment variable. 19 | # This default value facilitates local development. 20 | ENV PORT 8888 -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/README.md: -------------------------------------------------------------------------------- 1 | # server 2 | 3 | ## Warning 4 | 5 | This project requires a specific version of Aquduct! Please use this command to install the correct version. 6 | 7 | `pub global activate aqueduct 4.0.0-b1` 8 | 9 | ## How We Set this Project Up 10 | 11 | 1. `aqueduct create ` 12 | 13 | 2. Note, installing a database is NOT required for this example! 14 | 15 | ## Next Steps 16 | 17 | 1. Covering Postgres 18 | 19 | ## Running the Application Locally 20 | 21 | Run `aqueduct serve` from this directory to run the application. For running within an IDE, run `bin/main.dart`. By default, a configuration file named `config.yaml` will be used. 22 | 23 | To generate a SwaggerUI client, run `aqueduct document client`. 24 | 25 | ## Running Application Tests 26 | 27 | To run all tests for this application, run the following in this directory: 28 | 29 | ``` 30 | pub run test 31 | ``` 32 | 33 | The default configuration file used when testing is `config.src.yaml`. This file should be checked into version control. It also the template for configuration files used in deployment. 34 | 35 | ## Deploying an Application 36 | 37 | See the documentation for [Deployment](https://aqueduct.io/docs/deploy/). 38 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/bin/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:server/server.dart'; 2 | 3 | Future main() async { 4 | final port = int.parse(Platform.environment["PORT"] ?? "8888"); 5 | 6 | final app = Application() 7 | ..options.configurationFilePath = "config.yaml" 8 | ..options.port = port; 9 | 10 | await app.startOnCurrentIsolate(); 11 | 12 | print("Application started on port: ${app.options.port}."); 13 | print("Use Ctrl-C (SIGINT) to stop running the application."); 14 | } 15 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/config.src.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/server/config.src.yaml -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/02-server-intro/server/config.yaml -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/lib/channel.dart: -------------------------------------------------------------------------------- 1 | import 'package:server/server.dart'; 2 | 3 | /// This type initializes an application. 4 | /// 5 | /// Override methods in this class to set up routes and initialize services like 6 | /// database connections. See http://aqueduct.io/docs/http/channel/. 7 | class ServerChannel extends ApplicationChannel { 8 | /// Initialize services in this method. 9 | /// 10 | /// Implement this method to initialize services, read values from [options] 11 | /// and any other initialization required before constructing [entryPoint]. 12 | /// 13 | /// This method is invoked prior to [entryPoint] being accessed. 14 | @override 15 | Future prepare() async { 16 | logger.onRecord.listen((rec) => print("$rec ${rec.error ?? ""} ${rec.stackTrace ?? ""}")); 17 | } 18 | 19 | /// Construct the request channel. 20 | /// 21 | /// Return an instance of some [Controller] that will be the initial receiver 22 | /// of all [Request]s. 23 | /// 24 | /// This method is invoked after [prepare]. 25 | @override 26 | Controller get entryPoint { 27 | final router = Router(); 28 | 29 | // Prefer to use `link` instead of `linkFunction`. 30 | // See: https://aqueduct.io/docs/http/request_controller/ 31 | router 32 | .route("/example") 33 | .linkFunction((request) async { 34 | return Response.ok({"key": "value"}); 35 | }); 36 | 37 | return router; 38 | } 39 | } -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/lib/server.dart: -------------------------------------------------------------------------------- 1 | /// server 2 | /// 3 | /// A Aqueduct web server. 4 | library server; 5 | 6 | export 'dart:async'; 7 | export 'dart:io'; 8 | 9 | export 'package:aqueduct/aqueduct.dart'; 10 | 11 | export 'channel.dart'; 12 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: server 2 | description: An empty Aqueduct application. 3 | version: 0.0.1 4 | author: stable|kernel 5 | 6 | environment: 7 | sdk: ">=2.0.0 <3.0.0" 8 | 9 | dependencies: 10 | aqueduct: ^4.0.0-b1 11 | 12 | dev_dependencies: 13 | test: ^1.0.0 14 | aqueduct_test: ^2.0.0-b1 -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/test/example_test.dart: -------------------------------------------------------------------------------- 1 | import 'harness/app.dart'; 2 | 3 | Future main() async { 4 | final harness = Harness()..install(); 5 | 6 | test("GET /example returns 200 {'key': 'value'}", () async { 7 | expectResponse(await harness.agent.get("/example"), 200, body: {"key": "value"}); 8 | }); 9 | } 10 | -------------------------------------------------------------------------------- /simple_end_to_end/02-server-intro/server/test/harness/app.dart: -------------------------------------------------------------------------------- 1 | import 'package:server/server.dart'; 2 | import 'package:aqueduct_test/aqueduct_test.dart'; 3 | 4 | export 'package:server/server.dart'; 5 | export 'package:aqueduct_test/aqueduct_test.dart'; 6 | export 'package:test/test.dart'; 7 | export 'package:aqueduct/aqueduct.dart'; 8 | 9 | /// A testing harness for server. 10 | /// 11 | /// A harness for testing an aqueduct application. Example test file: 12 | /// 13 | /// void main() { 14 | /// Harness harness = Harness()..install(); 15 | /// 16 | /// test("GET /path returns 200", () async { 17 | /// final response = await harness.agent.get("/path"); 18 | /// expectResponse(response, 200); 19 | /// }); 20 | /// } 21 | /// 22 | class Harness extends TestHarness { 23 | @override 24 | Future onSetUp() async { 25 | 26 | } 27 | 28 | @override 29 | Future onTearDown() async { 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Exceptions to above rules. 44 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 45 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Nick Manning 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/README.md: -------------------------------------------------------------------------------- 1 | # minimalist_flutter_template 2 | 3 | A new Flutter project. 4 | 5 | ## How We Set Up This App 6 | 7 | Below are the steps that were taken to build this example project using the very simple flutter template at `https://github.com/seenickcode/minimalist_flutter_template` (using the `flutter_create` package). 8 | 9 | ### Basic Set Up 10 | 11 | 1. Building the app. 12 | 13 | How we created this app: `pub global activate flutter_create`. 14 | 15 | Then: `flutter_create -a -u https://github.com/seenickcode/minimalist_flutter_template` 16 | 17 | 2. Directory structure. 18 | 19 | We're separating the home screen from `main.dart` 20 | 21 | 3. Fonts. 22 | 23 | Including the `assets` diretory in `pubspec.yaml` and citing the fonts we'd like. Using the `theme` property of `MaterialApp` in `main.dart` to use our font. 24 | 25 | 4. Settting up our `home.dart` file: 26 | 27 | a. We import the `http` package in `pubspec.yaml` 28 | b. Then, we fetch some data from `postman-echo.com` and display it on screen. 29 | 30 | ### Setting Up Basic Integration tests 31 | 32 | We create a `test/integration` directory. Then add the following to `dev_dependencies` in `pubspec.yaml`: 33 | 34 | ``` 35 | flutter_driver: 36 | sdk: flutter 37 | ``` 38 | 39 | ## Next Up 40 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion 28 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 41 | applicationId "com.example.minimalist_flutter_template" 42 | minSdkVersion 16 43 | targetSdkVersion 28 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | } 47 | 48 | buildTypes { 49 | release { 50 | // TODO: Add your own signing config for the release build. 51 | // Signing with the debug keys for now, so `flutter run --release` works. 52 | signingConfig signingConfigs.debug 53 | } 54 | } 55 | } 56 | 57 | flutter { 58 | source '../..' 59 | } 60 | 61 | dependencies { 62 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 63 | } 64 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/src/main/kotlin/com/example/minimalist_flutter_template/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.minimalist_flutter_template 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/assets/fonts/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/assets/fonts/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/assets/fonts/OpenSans-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/assets/fonts/OpenSans-ExtraBold.ttf -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/assets/fonts/OpenSans-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/assets/fonts/OpenSans-Light.ttf -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/assets/fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/assets/fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | app 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/lib/app.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'screens/home.dart'; 3 | 4 | class App extends StatelessWidget { 5 | // This widget is the root of your application. 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | title: 'Flutter Demo', 10 | theme: ThemeData( 11 | primarySwatch: Colors.blue, 12 | visualDensity: VisualDensity.adaptivePlatformDensity, 13 | fontFamily: 'Open Sans', 14 | ), 15 | home: Home(), 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'app.dart'; 3 | import 'package:flutter_dotenv/flutter_dotenv.dart'; 4 | 5 | void main() async { 6 | await DotEnv().load('local.env'); 7 | runApp(App()); 8 | } 9 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/local.env: -------------------------------------------------------------------------------- 1 | API_BASE_URI=http://10.0.3.2:8888 -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: app 2 | description: A new Flutter project. 3 | 4 | publish_to: "none" # Remove this line if you wish to publish to pub.dev 5 | 6 | version: 1.0.0+1 7 | 8 | environment: 9 | sdk: ">=2.7.0 <3.0.0" 10 | 11 | dependencies: 12 | flutter: 13 | sdk: flutter 14 | http: ^0.12.2 15 | flutter_dotenv : ^2.1.0 16 | 17 | dev_dependencies: 18 | flutter_test: 19 | sdk: flutter 20 | flutter_driver: 21 | sdk: flutter 22 | 23 | flutter: 24 | uses-material-design: true 25 | assets: 26 | - assets/fonts/ 27 | - local.env 28 | 29 | fonts: 30 | - family: Open Sans 31 | fonts: 32 | - asset: assets/fonts/OpenSans-Bold.ttf 33 | weight: 700 34 | - asset: assets/fonts/OpenSans-ExtraBold.ttf 35 | weight: 800 36 | - asset: assets/fonts/OpenSans-Light.ttf 37 | weight: 300 38 | - asset: assets/fonts/OpenSans-Regular.ttf 39 | weight: 400 40 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/app/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:app/app.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(App()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/.gitignore: -------------------------------------------------------------------------------- 1 | .buildlog 2 | .pub/ 3 | build/ 4 | packages 5 | .packages 6 | *.dart.js 7 | *.js_ 8 | *.js.deps 9 | *.js.map 10 | workspace.xml 11 | Dart_Packages.xml 12 | .DS_Store 13 | .idea/ 14 | *.aqueduct.pid 15 | .dart_tool 16 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/.travis.yml: -------------------------------------------------------------------------------- 1 | language: dart 2 | script: pub run test -r expanded 3 | branches: 4 | only: 5 | - master -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM google/dart 2 | 3 | WORKDIR /app 4 | ADD pubspec.* /app/ 5 | RUN pub get --no-precompile 6 | ADD . /app/ 7 | RUN pub get --offline --no-precompile 8 | 9 | WORKDIR /app 10 | 11 | # EXPOSE 8888 12 | # ENV PORT 8888 13 | 14 | CMD [] 15 | # ENTRYPOINT pub run aqueduct:aqueduct serve --port ${PORT} 16 | ENTRYPOINT ["/usr/bin/dart", "bin/main.dart"] 17 | 18 | # Service must listen to $PORT environment variable. 19 | # This default value facilitates local development. 20 | ENV PORT 8888 -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/README.md: -------------------------------------------------------------------------------- 1 | # server 2 | 3 | ## Warning 4 | 5 | This project requires a specific version of Aquduct! Please use this command to install the correct version. 6 | 7 | `pub global activate aqueduct 4.0.0-b1` 8 | 9 | ## How We Set this Project Up 10 | 11 | 1. `aqueduct create ` 12 | 13 | 2. Note, installing a database is NOT required for this example! 14 | 15 | ## Next Steps 16 | 17 | 1. Covering Postgres 18 | 19 | ## Running the Application Locally 20 | 21 | Run `aqueduct serve` from this directory to run the application. For running within an IDE, run `bin/main.dart`. By default, a configuration file named `config.yaml` will be used. 22 | 23 | To generate a SwaggerUI client, run `aqueduct document client`. 24 | 25 | ## Running Application Tests 26 | 27 | To run all tests for this application, run the following in this directory: 28 | 29 | ``` 30 | pub run test 31 | ``` 32 | 33 | The default configuration file used when testing is `config.src.yaml`. This file should be checked into version control. It also the template for configuration files used in deployment. 34 | 35 | ## Deploying an Application 36 | 37 | See the documentation for [Deployment](https://aqueduct.io/docs/deploy/). 38 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/bin/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:server/server.dart'; 2 | 3 | Future main() async { 4 | final port = int.parse(Platform.environment["PORT"] ?? "8888"); 5 | 6 | final app = Application() 7 | ..options.configurationFilePath = "config.yaml" 8 | ..options.port = port; 9 | 10 | await app.startOnCurrentIsolate(); 11 | 12 | print("Application started on port: ${app.options.port}."); 13 | print("Use Ctrl-C (SIGINT) to stop running the application."); 14 | } 15 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/config.src.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/server/config.src.yaml -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/03-flutter-http-client/server/config.yaml -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/lib/channel.dart: -------------------------------------------------------------------------------- 1 | import 'package:server/server.dart'; 2 | 3 | /// This type initializes an application. 4 | /// 5 | /// Override methods in this class to set up routes and initialize services like 6 | /// database connections. See http://aqueduct.io/docs/http/channel/. 7 | class ServerChannel extends ApplicationChannel { 8 | /// Initialize services in this method. 9 | /// 10 | /// Implement this method to initialize services, read values from [options] 11 | /// and any other initialization required before constructing [entryPoint]. 12 | /// 13 | /// This method is invoked prior to [entryPoint] being accessed. 14 | @override 15 | Future prepare() async { 16 | logger.onRecord.listen((rec) => print("$rec ${rec.error ?? ""} ${rec.stackTrace ?? ""}")); 17 | } 18 | 19 | /// Construct the request channel. 20 | /// 21 | /// Return an instance of some [Controller] that will be the initial receiver 22 | /// of all [Request]s. 23 | /// 24 | /// This method is invoked after [prepare]. 25 | @override 26 | Controller get entryPoint { 27 | final router = Router(); 28 | 29 | // Prefer to use `link` instead of `linkFunction`. 30 | // See: https://aqueduct.io/docs/http/request_controller/ 31 | router 32 | .route("/example") 33 | .linkFunction((request) async { 34 | return Response.ok({"key": "value"}); 35 | }); 36 | 37 | return router; 38 | } 39 | } -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/lib/server.dart: -------------------------------------------------------------------------------- 1 | /// server 2 | /// 3 | /// A Aqueduct web server. 4 | library server; 5 | 6 | export 'dart:async'; 7 | export 'dart:io'; 8 | 9 | export 'package:aqueduct/aqueduct.dart'; 10 | 11 | export 'channel.dart'; 12 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: server 2 | description: An empty Aqueduct application. 3 | version: 0.0.1 4 | author: stable|kernel 5 | 6 | environment: 7 | sdk: ">=2.0.0 <3.0.0" 8 | 9 | dependencies: 10 | aqueduct: ^4.0.0-b1 11 | 12 | dev_dependencies: 13 | test: ^1.0.0 14 | aqueduct_test: ^2.0.0-b1 -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/test/example_test.dart: -------------------------------------------------------------------------------- 1 | import 'harness/app.dart'; 2 | 3 | Future main() async { 4 | final harness = Harness()..install(); 5 | 6 | test("GET /example returns 200 {'key': 'value'}", () async { 7 | expectResponse(await harness.agent.get("/example"), 200, body: {"key": "value"}); 8 | }); 9 | } 10 | -------------------------------------------------------------------------------- /simple_end_to_end/03-flutter-http-client/server/test/harness/app.dart: -------------------------------------------------------------------------------- 1 | import 'package:server/server.dart'; 2 | import 'package:aqueduct_test/aqueduct_test.dart'; 3 | 4 | export 'package:server/server.dart'; 5 | export 'package:aqueduct_test/aqueduct_test.dart'; 6 | export 'package:test/test.dart'; 7 | export 'package:aqueduct/aqueduct.dart'; 8 | 9 | /// A testing harness for server. 10 | /// 11 | /// A harness for testing an aqueduct application. Example test file: 12 | /// 13 | /// void main() { 14 | /// Harness harness = Harness()..install(); 15 | /// 16 | /// test("GET /path returns 200", () async { 17 | /// final response = await harness.agent.get("/path"); 18 | /// expectResponse(response, 200); 19 | /// }); 20 | /// } 21 | /// 22 | class Harness extends TestHarness { 23 | @override 24 | Future onSetUp() async { 25 | 26 | } 27 | 28 | @override 29 | Future onTearDown() async { 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Exceptions to above rules. 44 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 45 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Nick Manning 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/README.md: -------------------------------------------------------------------------------- 1 | # minimalist_flutter_template 2 | 3 | A new Flutter project. 4 | 5 | ## How We Set Up This App 6 | 7 | Below are the steps that were taken to build this example project using the very simple flutter template at `https://github.com/seenickcode/minimalist_flutter_template` (using the `flutter_create` package). 8 | 9 | ### Basic Set Up 10 | 11 | 1. Building the app. 12 | 13 | How we created this app: `pub global activate flutter_create`. 14 | 15 | Then: `flutter_create -a -u https://github.com/seenickcode/minimalist_flutter_template` 16 | 17 | 2. Directory structure. 18 | 19 | We're separating the home screen from `main.dart` 20 | 21 | 3. Fonts. 22 | 23 | Including the `assets` diretory in `pubspec.yaml` and citing the fonts we'd like. Using the `theme` property of `MaterialApp` in `main.dart` to use our font. 24 | 25 | 4. Settting up our `home.dart` file: 26 | 27 | a. We import the `http` package in `pubspec.yaml` 28 | b. Then, we fetch some data from `postman-echo.com` and display it on screen. 29 | 30 | ### Setting Up Basic Integration tests 31 | 32 | We create a `test/integration` directory. Then add the following to `dev_dependencies` in `pubspec.yaml`: 33 | 34 | ``` 35 | flutter_driver: 36 | sdk: flutter 37 | ``` 38 | 39 | ## Next Up 40 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion 28 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 41 | applicationId "com.example.minimalist_flutter_template" 42 | minSdkVersion 16 43 | targetSdkVersion 28 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | } 47 | 48 | buildTypes { 49 | release { 50 | // TODO: Add your own signing config for the release build. 51 | // Signing with the debug keys for now, so `flutter run --release` works. 52 | signingConfig signingConfigs.debug 53 | } 54 | } 55 | } 56 | 57 | flutter { 58 | source '../..' 59 | } 60 | 61 | dependencies { 62 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 63 | } 64 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/src/main/kotlin/com/example/minimalist_flutter_template/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.minimalist_flutter_template 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/assets/fonts/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/assets/fonts/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/assets/fonts/OpenSans-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/assets/fonts/OpenSans-ExtraBold.ttf -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/assets/fonts/OpenSans-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/assets/fonts/OpenSans-Light.ttf -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/assets/fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/assets/fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | app 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/lib/app.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'screens/home.dart'; 3 | 4 | class App extends StatelessWidget { 5 | // This widget is the root of your application. 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | title: 'Flutter Demo', 10 | theme: ThemeData( 11 | primarySwatch: Colors.blue, 12 | visualDensity: VisualDensity.adaptivePlatformDensity, 13 | fontFamily: 'Open Sans', 14 | ), 15 | home: Home(), 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'app.dart'; 3 | import 'package:flutter_dotenv/flutter_dotenv.dart'; 4 | 5 | void main() async { 6 | await DotEnv().load('local.env'); 7 | runApp(App()); 8 | } 9 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/local.env: -------------------------------------------------------------------------------- 1 | API_BASE_URI=http://10.0.3.2:8888 -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: app 2 | description: A new Flutter project. 3 | 4 | publish_to: "none" # Remove this line if you wish to publish to pub.dev 5 | 6 | version: 1.0.0+1 7 | 8 | environment: 9 | sdk: ">=2.7.0 <3.0.0" 10 | 11 | dependencies: 12 | flutter: 13 | sdk: flutter 14 | http: ^0.12.2 15 | flutter_dotenv : ^2.1.0 16 | 17 | dev_dependencies: 18 | flutter_test: 19 | sdk: flutter 20 | flutter_driver: 21 | sdk: flutter 22 | 23 | flutter: 24 | uses-material-design: true 25 | assets: 26 | - assets/fonts/ 27 | - local.env 28 | 29 | fonts: 30 | - family: Open Sans 31 | fonts: 32 | - asset: assets/fonts/OpenSans-Bold.ttf 33 | weight: 700 34 | - asset: assets/fonts/OpenSans-ExtraBold.ttf 35 | weight: 800 36 | - asset: assets/fonts/OpenSans-Light.ttf 37 | weight: 300 38 | - asset: assets/fonts/OpenSans-Regular.ttf 39 | weight: 400 40 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/app/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:app/app.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(App()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/.gitignore: -------------------------------------------------------------------------------- 1 | .buildlog 2 | .pub/ 3 | build/ 4 | packages 5 | .packages 6 | *.dart.js 7 | *.js_ 8 | *.js.deps 9 | *.js.map 10 | workspace.xml 11 | Dart_Packages.xml 12 | .DS_Store 13 | .idea/ 14 | *.aqueduct.pid 15 | .dart_tool 16 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/.travis.yml: -------------------------------------------------------------------------------- 1 | language: dart 2 | script: pub run test -r expanded 3 | branches: 4 | only: 5 | - master -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM google/dart 2 | 3 | WORKDIR /app 4 | COPY pubspec.* /app/ 5 | RUN pub get --no-precompile 6 | COPY . /app/ 7 | RUN pub get --offline --no-precompile 8 | 9 | CMD [] 10 | 11 | ENTRYPOINT ["/usr/bin/dart", "bin/main.dart"] 12 | 13 | # Service must listen to $PORT environment variable. 14 | # This default value facilitates local development. 15 | ENV PORT 8080 -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/bin/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:server/server.dart'; 2 | 3 | Future main() async { 4 | final port = int.parse(Platform.environment["PORT"] ?? "8080"); 5 | 6 | final app = Application() 7 | ..options.configurationFilePath = "config.yaml" 8 | ..options.port = port; 9 | 10 | await app.start(numberOfInstances: 1, consoleLogging: true); 11 | 12 | // this doesn't work for Google Cloud Run 13 | // await app.startOnCurrentIsolate(); 14 | 15 | print("Application started on port: ${app.options.port}."); 16 | print("Use Ctrl-C (SIGINT) to stop running the application."); 17 | 18 | // needed when we want to send a SIGINT to a running Docker container 19 | ProcessSignal.sigint.watch().listen((signal) { 20 | print("receivd SIGINT, exiting"); 21 | exit(0); 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/config.src.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/server/config.src.yaml -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seenickcode/fullstackflutter/934ec2a3476a942d6333f967ab4dff4d04bc3ed7/simple_end_to_end/04-deploying-server/server/config.yaml -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/lib/channel.dart: -------------------------------------------------------------------------------- 1 | import 'package:server/server.dart'; 2 | 3 | /// This type initializes an application. 4 | /// 5 | /// Override methods in this class to set up routes and initialize services like 6 | /// database connections. See http://aqueduct.io/docs/http/channel/. 7 | class ServerChannel extends ApplicationChannel { 8 | /// Initialize services in this method. 9 | /// 10 | /// Implement this method to initialize services, read values from [options] 11 | /// and any other initialization required before constructing [entryPoint]. 12 | /// 13 | /// This method is invoked prior to [entryPoint] being accessed. 14 | @override 15 | Future prepare() async { 16 | logger.onRecord.listen( 17 | (rec) => print("$rec ${rec.error ?? ""} ${rec.stackTrace ?? ""}")); 18 | } 19 | 20 | /// Construct the request channel. 21 | /// 22 | /// Return an instance of some [Controller] that will be the initial receiver 23 | /// of all [Request]s. 24 | /// 25 | /// This method is invoked after [prepare]. 26 | @override 27 | Controller get entryPoint { 28 | final router = Router(); 29 | 30 | router.route("/").linkFunction((request) async { 31 | return Response.ok("Hello, everyone!"); 32 | }); 33 | 34 | // Prefer to use `link` instead of `linkFunction`. 35 | // See: https://aqueduct.io/docs/http/request_controller/ 36 | router.route("/example").linkFunction((request) async { 37 | return Response.ok({"key": "value"}); 38 | }); 39 | 40 | return router; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/lib/server.dart: -------------------------------------------------------------------------------- 1 | /// server 2 | /// 3 | /// A Aqueduct web server. 4 | library server; 5 | 6 | export 'dart:async'; 7 | export 'dart:io'; 8 | 9 | export 'package:aqueduct/aqueduct.dart'; 10 | 11 | export 'channel.dart'; 12 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: server 2 | description: An empty Aqueduct application. 3 | version: 0.0.1 4 | author: stable|kernel 5 | 6 | environment: 7 | sdk: ">=2.0.0 <3.0.0" 8 | 9 | dependencies: 10 | aqueduct: ^4.0.0-b1 11 | 12 | dev_dependencies: 13 | test: ^1.0.0 14 | aqueduct_test: ^2.0.0-b1 -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/test/example_test.dart: -------------------------------------------------------------------------------- 1 | import 'harness/app.dart'; 2 | 3 | Future main() async { 4 | final harness = Harness()..install(); 5 | 6 | test("GET /example returns 200 {'key': 'value'}", () async { 7 | expectResponse(await harness.agent.get("/example"), 200, 8 | body: {"key": "value"}); 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /simple_end_to_end/04-deploying-server/server/test/harness/app.dart: -------------------------------------------------------------------------------- 1 | import 'package:server/server.dart'; 2 | import 'package:aqueduct_test/aqueduct_test.dart'; 3 | 4 | export 'package:server/server.dart'; 5 | export 'package:aqueduct_test/aqueduct_test.dart'; 6 | export 'package:test/test.dart'; 7 | export 'package:aqueduct/aqueduct.dart'; 8 | 9 | /// A testing harness for server. 10 | /// 11 | /// A harness for testing an aqueduct application. Example test file: 12 | /// 13 | /// void main() { 14 | /// Harness harness = Harness()..install(); 15 | /// 16 | /// test("GET /path returns 200", () async { 17 | /// final response = await harness.agent.get("/path"); 18 | /// expectResponse(response, 200); 19 | /// }); 20 | /// } 21 | /// 22 | class Harness extends TestHarness { 23 | @override 24 | Future onSetUp() async { 25 | 26 | } 27 | 28 | @override 29 | Future onTearDown() async { 30 | 31 | } 32 | } 33 | --------------------------------------------------------------------------------