diff --git a/README.md b/README.md index cd1ae88ca2..389271909e 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ We are iterating and looking for feedback and collaboration, so please [**let us ⚠️ **Amplify Flutter v1 is now in Maintenance Mode until April 30th, 2025. This means that we will continue to include updates to ensure compatibility with backend services and security. No new features will be introduced in v1.** -Please use the latest version (v2) of Amplify Flutter. If you are currently using v1, follow [these instructions](https://docs.amplify.aws/lib/project-setup/upgrade-guide/q/platform/flutter/) to upgrade to v2. +Please use the latest version (Gen 2) of Amplify Flutter. If you are currently using v1, follow [these instructions](https://docs.amplify.aws/lib/project-setup/upgrade-guide/q/platform/flutter/) to upgrade to v2. ## Supported Amplify Libraries @@ -56,9 +56,8 @@ We follow [semantic versioning for updating our dependencies](https://semver.org ## Documentation -- [Getting Started with Amplify Flutter](https://docs.amplify.aws/start/q/integration/flutter) +- [Getting Started with Amplify Flutter](https://docs.amplify.aws/flutter/start/quickstart/) - [Amplify Framework](https://docs.amplify.aws/) -- [Install the Amplify CLI](https://docs.amplify.aws/lib/project-setup/prereq/q/platform/flutter#install-and-configure-the-amplify-cli) - [Contributing to Amplify Flutter](CONTRIBUTING.md) ## Flutter Development Guide @@ -68,71 +67,31 @@ Amplify for Flutter is an open-source project and welcomes contributions from th #### Prerequisites - [Flutter](https://flutter.dev/docs/get-started/install) -- [Amplify CLI](https://docs.amplify.aws/lib/project-setup/prereq/q/platform/flutter#option-1-watch-the-video-guide) +- Node.js v18.17 or later +- npm v9 or later -#### Getting Started Amplify Flutter +#### Getting Started With Amplify Flutter 1. Open your Flutter project. If you do not have an active Flutter project, you can create one after installing the [Flutter development tooling](https://flutter.dev/docs/get-started/install) and running `flutter create ` in your terminal. -2. Using the Amplify CLI, run `amplify init` from the root of your project: +2. Run the following to create an amplify project: -If you have not configured the Amplify CLI, check out our documentation at [Amplify CLI Installation](https://docs.amplify.aws/lib/project-setup/prereq/q/platform/flutter#install-and-configure-the-amplify-cli). + `npm create amplify@latest -y` -```bash -==> amplify init -Note: It is recommended to run this command from the root of your app directory -? Enter a name for the project -The following configuration will be applied: +4. To use the Authenticator, you need to add the following dependencies to your project: -Project information -| Name: -| Environment: dev -| Default editor: Visual Studio Code -| App type: flutter -| Configuration file location: ./lib/ + ```yaml + dependencies: + amplify_auth_cognito: ^2.0.0 + amplify_authenticator: ^2.0.0 + amplify_flutter: ^2.0.0 + flutter: + sdk: flutter + ``` -? Initialize the project with the above configuration? Yes -Using default provider awscloudformation -? Select the authentication method you want to use: AWS profile +5. run `flutter pub get` -For more information on AWS Profiles, see: -https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html - -? Please choose the profile you want to use default -``` - -4. Add Amplify categories (choose defaults for this example): - - ```bash - $ amplify add auth # Choose default configuration after entering this command in your terminal. - ``` - -5. Push changes to the cloud to provision the backend resources: - - ```bash - $ amplify push - ``` - -6. In your pubspec.yaml file, add the following to `dependencies`: - -> Note: Do not include dependencies in your `pubspec` file that you are not using in your app. This can cause a configuration error in the underlying SDK. - -```yaml -dependencies: - amplify_auth_cognito: ^2.0.0 - amplify_authenticator: ^2.0.0 - amplify_flutter: ^2.0.0 - flutter: - sdk: flutter -``` - -7. From the terminal run - -```bash -flutter pub get -``` - -8. In your main.dart file, add: +6. Update your main.dart file to the following: ```dart import 'package:amplify_auth_cognito/amplify_auth_cognito.dart'; @@ -140,36 +99,30 @@ import 'package:amplify_authenticator/amplify_authenticator.dart'; import 'package:amplify_flutter/amplify_flutter.dart'; import 'package:flutter/material.dart'; -import 'amplifyconfiguration.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() => _MyAppState(); -} +import 'amplify_outputs.dart'; -class _MyAppState extends State { - @override - void initState() { - super.initState(); - _configureAmplify(); +Future main() async { + try { + WidgetsFlutterBinding.ensureInitialized(); + await _configureAmplify(); + runApp(const MyApp()); + } on AmplifyException catch (e) { + runApp(Text("Error configuring Amplify: ${e.message}")); } +} - Future _configureAmplify() async { - try { - await Amplify.addPlugin(AmplifyAuthCognito()); - await Amplify.configure(amplifyconfig); - safePrint('Successfully configured'); - } on Exception catch (e) { - safePrint('Error configuring Amplify: $e'); - } +Future _configureAmplify() async { + try { + await Amplify.addPlugin(AmplifyAuthCognito()); + await Amplify.configure(amplifyConfig); + safePrint('Successfully configured'); + } on Exception catch (e) { + safePrint('Error configuring Amplify: $e'); } +} +class MyApp extends StatelessWidget { + const MyApp({super.key}); @override Widget build(BuildContext context) { return Authenticator( @@ -177,7 +130,13 @@ class _MyAppState extends State { builder: Authenticator.builder(), home: const Scaffold( body: Center( - child: Text('You are logged in!'), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SignOutButton(), + Text('TODO Application'), + ], + ), ), ), ), @@ -186,17 +145,17 @@ class _MyAppState extends State { } ``` -9. Since Amplify Flutter supports 6 platforms with Flutter including iOS, Android, Web, and Desktop, some extra configuration may be required for each platform. Check out the [Platform Setup](https://docs.amplify.aws/lib/project-setup/platform-setup/q/platform/flutter/) guide to make sure you've completed the necessary steps. +7. Deploy your backend use Amplify's per-developer cloud sandbox. This feature provides a separate backend environment for every developer on a team, ideal for local development and testing. To run your application with a sandbox environment, you can run the following command: -10. Run `flutter run` to launch your app on the connected device. + `npx ampx sandbox --outputs-format dart --outputs-out-dir lib` -11. Once the app is loaded, tap on **Configure Amplify**, then on **Record Event** a few times. +8. Since Amplify Flutter supports 6 platforms with Flutter including iOS, Android, Web, and Desktop, some extra configuration may be required for each platform. Check out the [Platform Setup](https://docs.amplify.aws/flutter/start/platform-setup/) guide to make sure you've completed the necessary steps. -12. To see the events you recoded, run `amplify console analytics`. This will open the Amazon Pinpoint console for your project in your default web browser. Within about a minute you should start seeing the events populating in the Events section of then Pinpoint console. +9. Run `flutter run` to launch your app on the connected device. Congratulations, you've built your first Amplify app! 🎉 -For further documentation and Amplify Category usage, see the [documentation](https://docs.amplify.aws/lib/q/platform/flutter). +For further documentation and Amplify Category usage, see the [documentation](https://docs.amplify.aws/flutter/). ---