适用于 Flutter 的 AWS Amplify_flutter aws

要将 Amplify 与 AWS 资源一起使用,您首先需要使用您的 AWS 账户对其进行配置。按照以下说明使用 AWS 账户配置 Amplify:

amplify configure

以后,amplify configure将要求您在浏览器中通过 AWS 控制台登录。登录后。CLI 将要求创建一个 IAM 用户。按照下面给出的代码:

Specify the AWS Region
? region:  # Your preferred region
Specify the username of the new IAM user:
? user name: the # User name for Amplify IAM user
Complete the user-created using the AWS console

创建一个用户以AdministratorAccess在您的项目中创建所有必需的资源。

您只能根据需要授予所需的权限


成功创建 IAM 用户后,它将在最后提供accessKeyId和secretAccessKey。当被询问时,将这些密钥提供给 CLI。

Enter the access key of the newly created user:
? accessKeyId:  # YOUR_ACCESS_KEY_ID
? secretAccessKey:  # YOUR_SECRET_ACCESS_KEY
This would update/create the AWS Profile in your local machine
? Profile Name:  # (default)

Successfully set up the new user.

成功配置 Amplify 后,导航到 JavaScript、iOS、Android 或 Flutter 项目根目录,并通过运行amplify init. 它会问你几个配置问题。在此命令之后,它将在您的根目录中创建一个放大文件夹以及该amplifyconfiguration文件。

Amplify CLI 命令

amplify init

这是创建 Amplify 支持的应用程序的一次性初始化过程。此命令可帮助您选择使用哪个 AWS 配置文件来分配所有 AWS 资源,并选择与项目对应的框架语言(Javascript、Flutter、Java、Swift)。amplify init在 S3 存储桶中创建一个父 CloudFormation 模板,该模板将包含嵌套的 CloudFormation 模板,以便在添加其他 AWS 资源时使用。同一个 S3 存储桶还包含 Lambda zip 文件以及 AppSync 架构和解析器文件。amplify/目录在成功完成amplify init命令后创建,其中包含所有必要的元数据文件。

这是amplify/目录结构的样子:

<project-root>
    |_amplify/
    |_ #current-cloud-backend/
        |_ amplify-meta.json
    |_ .config
        |_ aws-info.json
        |_ project-config.json
    |_ backend/
        |_amplify-meta.json
    |_.amplifyrc

amplify <category> add

用户可以使用此命令将必要的资源添加到他们的项目中。这将为amplify/backend/目录中的资源创建一个 CloudFormation 模板。此过程完成后,用户可以运行amplify push以运行 CloudFormation 模板并使用 Amplify IAM 用户将所有资源分配给该项目。

amplify push
该命令用于创建和更新云资源。使用它,CLI 会将最新的嵌套堆栈模板上传到 S3,然后调用 AWS CloudFormation API 来创建或更新资源。一旦 CloudFormation 成功完成,awsconfiguration.dart(对于 Flutter 项目)将被更新。此 CloudFormation 模板可在 中找到amplify/backend/awscloudformation。

amplify pull
该amplify pull命令类似于git pull。它所做的只是获取远程后端配置并更新本地环境以匹配定义。当多个开发人员在同一个后端工作并且远程后端不断更新时,此命令很有帮助。建议amplify pull定期运行以防止后端冲突。

amplify console
此命令将使用 Amplify 控制台打开浏览器到您的项目。此控制台提供集中访问以管理和查看项目中使用的所有资源。所有用户数据也在控制台中进行分析。

命令列表:

  • amplify <category> <subcommand>
  • amplify push
  • amplify pull
  • amplify env <subcommand>
  • amplify configure
  • amplify console
  • amplify delete
  • amplify help
  • amplify init
  • amplify publish
  • amplify run
  • amplify status
  • amplify logout

Amplify控制台

Amplify 控制台可以通过 AWS 控制台访问,并充当全栈应用程序开发和部署的控制中心。Amplify 控制台由两部分组成:

  1. Amplify托管
  2. Amplify管理用户界面

Amplify托管

Amplify 托管用于管理应用程序的前端部分。它对应于使用 Git。Git 中的每个分支都已部署,并且可通过唯一的 URL 访问。

Amplify管理用户界面

Amplify Admin UI 用于管理所有后端服务,如 DataStore 架构、身份验证、功能、存储、API 等。Admin UI 为底层 AWS 服务提供控制台。

https://docs.amplify.aws/images/console/backend-envs.gif

将 Amplify 与Flutter集成

将 Amplify 添加到您的项目是一个非常简单且非常快速的过程。先决条件是您应该使用 AWS 账户设置 Amplify CLI。

创建新的Flutter项目:

i) 使用 Flutter CLI 创建您的项目。

flutter create flutter_amplify_demo

pubspec.yamlii)接下来,通过打开并粘贴下面给出的依赖项来放大对项目的依赖项:

dependencies:
  flutter:
    sdk: flutter

  amplify_flutter: '<1.0.0'
  amplify_auth_cognito: '<1.0.0'
  amplify_analytics_pinpoint: '<1.0.0'

iii)在此之后,运行Flutter pub get:

flutter pub get

iv) 现在要集成 Amplify,进入项目根目录并运行amplify init,如下所示:

➜  flutter_amplify_demo $ amplify init
Initializing new Amplify CLI version...
Done initializing new version.
Scanning for plugins...
Plugin scan successful
Note: It is recommended to run this command from the root of your app directory
? Enter a name for the project: flutteramplifydemo
? Enter a name for the environment: dev
? Choose your default editor: Visual Studio Code
? Choose the type of app that you're building: flutter
Please tell us about your project
? Where do you want to store your configuration file?: ./lib/
Using default provider: awscloudformation
? Select the authentication method you want to use: AWS profile

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

v) 要使用 Amplify 项目,必须在应用程序启动时对其进行初始化。为此,请编辑main.dart文件和下面给出的样板代码:

import 'package:flutter/material.dart';
import 'package:amplify_flutter/amplify.dart';
import 'package:amplify_analytics_pinpoint/amplify_analytics_pinpoint.dart';
import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';
import 'amplifyconfiguration.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool _amplifyConfigured = false;

  @override
  void initState() {
    super.initState();
    _configureAmplify(); 
  }

  void _configureAmplify() async {
  }

  void _recordEvent() async {
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: const Text('Amplify Core example app'),
          ),
          body: ListView(padding: EdgeInsets.all(10.0), children: <Widget>[
            Center( 
              child: Column (
                children: [
                  const Padding(padding: EdgeInsets.all(5.0)),
                  Text(
                    _amplifyConfigured ? 'configured' : 'not configured'
                  ),                  
                  ElevatedButton(
                    onPressed: _amplifyConfigured ? _recordEvent : null,
                    child: const Text('record event')
                  )
                ]
              ),
            )
          ])
      )
    );
  }
}

在 Amplify 中使用任何 Amplify 封装功能之前,都必须提到配置调用。请注意,此init方法只能在项目的根目录调用一次。

void _configureAmplify() async {
  if (!mounted) return;

  // Add Pinpoint and Cognito Plugins
  Amplify.addPlugin(AmplifyAnalyticsPinpoint());
  Amplify.addPlugin(AmplifyAuthCognito());

  // Once Plugins are added, configure Amplify
  // Note: Amplify can only be configured once.
  try {
    await Amplify.configure(amplifyconfig);
  } on AmplifyAlreadyConfiguredException {
    print("Amplify was already configured. Was the app restarted?");
  }
  try {
    setState(() {
      _amplifyConfigured = true;
    });
  } catch (e) {
    print(e);
  }

}

addPlugin()应该总是在之前调用Amplify.configure()。多次调用Amplify.configure将导致异常。

这是 Amplify with Flutter 框架系列文章的第一篇。本系列将详细介绍 Amplify 为 Flutter 提供的各项服务。所以请继续关注。

非常感谢您阅读😁。这就是今天的内容。

如果大伙有什么好的学习方法或建议欢迎大家在评论中积极留言哈,希望大家能够共同学习、共同努力、共同进步。

小编在这里祝小伙伴们在未来的日子里都可以 升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰!!

不论遇到什么困难,都不应该成为我们放弃的理由!

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,需要一份小编整理出来的学习资料的关注我主页或者点击文末卡片免费领取~

这里是关于我自己的Android flutter学习,面试文档,视频收集大整理,有兴趣的伙伴们可以看看~

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
[外链图片转存中…(img-SLfUgeVg-1712913525198)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter Zoomable Image 是一个用于 Flutter 应用程序的库,它提供了一个可缩放和拖动的图像小部件。使用 Flutter Zoomable Image,您可以轻松地实现图像的缩放、拖动和捏放手势操作。这对于创建具有可交互性的图像查看器和画廊等应用程序非常有用。 要使用 Flutter Zoomable Image,您需要在项目的 `pubspec.yaml` 文件中添加依赖项,并运行 `flutter packages get` 命令来获取库。 以下是一个简单的示例代码,演示了如何在 Flutter 中使用 Zoomable Image: ```dart import 'package:flutter/material.dart'; import 'package:flutter_zoomable_image/flutter_zoomable_image.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Zoomable Image Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(), ); } } class MyHomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Zoomable Image Demo'), ), body: Center( child: ZoomableImage( AssetImage('path/to/your/image.jpg'), placeholder: Center(child: CircularProgressIndicator()), backgroundColor: Colors.black, ), ), ); } } ``` 在上面的示例中,我们创建了一个简单的 Flutter 应用程序,其中包含一个使用 ZoomableImage 小部件的页面。ZoomableImage 接受一个 AssetImage 对象作为图像源,并提供了一些可选参数,例如 placeholder(用于在图像加载期间显示的小部件)和 backgroundColor(用于设置图像背景色)。 您可以根据自己的需求定制 Zoomable Image 的样式和行为。要了解更多关于 Flutter Zoomable Image 的信息和用法,请参考官方文档或库的 GitHub 页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值