Flutter后端服务插件serverpod的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter后端服务插件Serverpod的使用

Serverpod简介

Serverpod banner

Serverpod 是为Flutter社区构建的新一代应用程序和Web服务器。它允许您用Dart编写服务器端代码,自动生成API,并以最少的努力连接数据库。Serverpod是开源的,您可以将服务器托管在任何地方。

功能特性

Serverpod是一个完整的、功能强大的Flutter后端解决方案。除了作为服务器之外,Serverpod还集成了许多其他常见的任务,这些任务通常需要大量的代码编写或依赖外部服务来实现。以下是Serverpod的一些主要功能:

代码生成

Serverpod会根据您的服务器自动为您生成模型和客户端代码。调用远程端点就像进行本地方法调用一样简单。

世界级日志记录

不再为查找无尽的服务器日志而烦恼。通过易于使用的用户界面,只需单击即可精确定位异常和慢速数据库查询。

内置缓存

减少数据库成本。无需永久保存所有数据。Serverpod内置高性能分布式缓存,可以直接在服务器上本地缓存任何可序列化对象,或者在需要跨服务器集群使用相同缓存时使用Redis。

易于使用的ORM

节省时间。与数据库通信可能是一件麻烦事。使用Serverpod的ORM,您的查询使用原生Dart类型和空安全检查。从静态检查的代码到数据库有一条直接的路径。

数据库迁移

随着项目需求的变化轻松保持数据库同步。Serverpod自带完整的数据库迁移系统,帮助您应用和版本化对数据库的更改。

文件上传

直接将文件上传到Google Cloud Storage、S3或存储在数据库中。

身份验证

通过社交登录或自定义方式登录。目前支持Google、Apple、Firebase和电子邮件登录。

数据流

通过身份验证的套接字传递序列化对象。从服务器推送消息以实现实时通信。支持跨服务器集群发送消息。非常适合构建游戏或聊天应用程序,或者任何你能想象的东西。

任务调度

Serverpod的未来调用取代了复杂的cron作业。可以在未来的任何时间或指定延迟后调用一个方法。即使服务器重启,调用也会持续存在。

健康检查

监控您正在使用的数据库和外部服务。编写自定义健康检查并在出现问题时收到通知。

简单部署

Serverpod带有用于Google Cloud Platform和AWS的Terraform脚本,使部署服务器非常快速。我们仍在为其他平台开发脚本。如果您想贡献,请与我们联系。

内置Web服务器

Serverpod自带Web服务器。这使得共享应用程序所需的数据变得非常容易,这些应用程序既需要应用程序又需要传统的网页。您还可以使用Web服务器创建网络钩子或生成自定义REST API以与第三方服务通信。(Web服务器仍处于实验阶段,我们正在积极开发中

许可证

所有Serverpod包均采用BSD-3许可证,但主serverpod包除外,它使用SSPL许可证。简而言之,这意味着您可以不受限制地在应用程序中使用任何客户端包。您也可以不受限制地托管自己的Serverpod服务器,只要您不向第三方提供Serverpod云服务(这通常只与云服务提供商相关)。

示例代码

查看示例是学习的好方法。以下是由Serverpod团队和社区创建的示例集合。

Pixorama

Pixorama:一个多用户绘图体验。展示了Serverpod的实时能力,代码量不到一页。

GitHub上的示例目录

GitHub上的示例目录:展示了如何使用auth和chat模块进行Apple、Google、电子邮件和Firebase的身份验证以及实现实时聊天。

教程

有关教程视频和其他文档,请参考我们的文档网站

完整示例Demo

接下来,我们将展示一个简单的Serverpod示例,包括设置Serverpod服务器和客户端的基本步骤。

设置Serverpod服务器

  1. 创建新项目

    首先,确保您已经安装了Dart SDK和Flutter。然后,通过命令行创建一个新的Serverpod项目:

    dart pub global activate serverpod_cli
    serverpod create my_serverpod_project
    cd my_serverpod_project
    
  2. 配置数据库

    编辑config/db.yaml文件,配置您的数据库连接信息。例如,如果您使用的是PostgreSQL:

    development:
      host: localhost
      port: 5432
      databaseName: my_database
      user: my_user
      password: my_password
    
  3. 启动服务器

    使用以下命令启动Serverpod服务器:

    dart run bin/main.dart
    

创建Flutter客户端

  1. 添加依赖项

    在Flutter项目的pubspec.yaml文件中添加Serverpod客户端依赖项:

    dependencies:
      flutter:
        sdk: flutter
      serverpod_client: ^x.x.x # 替换为最新版本号
    
  2. 初始化客户端

    在Flutter应用程序中初始化Serverpod客户端:

    import 'package:serverpod_client/serverpod_client.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      final client = Client('http://localhost:8080');
      await client.connect();
      runApp(MyApp(client: client));
    }
    
  3. 调用服务器端点

    您可以通过调用Serverpod客户端的方法来与服务器交互。例如,假设您有一个名为greet的服务端点:

    class MyApp extends StatelessWidget {
      final Client client;
    
      MyApp({required this.client});
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(title: Text('Serverpod Demo')),
            body: Center(
              child: FutureBuilder<String>(
                future: client.greet(),
                builder: (context, snapshot) {
                  if (snapshot.connectionState == ConnectionState.done) {
                    if (snapshot.hasError) {
                      return Text('Error: ${snapshot.error}');
                    } else {
                      return Text('Greeting: ${snapshot.data}');
                    }
                  } else {
                    return CircularProgressIndicator();
                  }
                },
              ),
            ),
          ),
        );
      }
    }
    

以上就是使用Serverpod作为Flutter应用程序后端服务的基本步骤。希望这对您有所帮助!如果您有任何问题或需要进一步的帮助,请随时提问。


更多关于Flutter后端服务插件serverpod的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter后端服务插件serverpod的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用Serverpod作为后端服务插件的简要说明及代码示例。Serverpod是一个专门为Flutter设计的后端框架,旨在简化后端服务的开发、部署和集成。

环境设置

首先,确保你已经安装了Flutter和Dart SDK。此外,你还需要安装Node.js和npm(或yarn),因为Serverpod的某些工具依赖于它们。

创建一个新的Flutter项目

flutter create my_flutter_app
cd my_flutter_app

添加Serverpod依赖

在你的pubspec.yaml文件中,添加Serverpod的依赖:

dependencies:
  flutter:
    sdk: flutter
  serverpod: ^最新版本号 # 请替换为实际发布的最新版本号

然后运行flutter pub get来安装依赖。

初始化Serverpod后端

  1. 创建Serverpod项目

    在你的Flutter项目根目录下,运行以下命令来初始化Serverpod后端:

    npx [@serverpod](/user/serverpod)/cli init
    

    这将创建一个名为serverpod的文件夹,里面包含了Serverpod后端项目的结构。

  2. 配置Serverpod

    编辑serverpod/podspec.yaml文件,配置你的Serverpod项目。例如:

    name: my_serverpod_backend
    version: 1.0.0
    dart_version: ">=2.14.0 <3.0.0"
    dependencies:
      serverpod: ^最新版本号 # 请替换为实际发布的最新版本号
    
  3. 编写后端逻辑

    serverpod/lib目录下创建一个Dart文件(例如my_service.dart),并编写你的后端逻辑。例如:

    import 'package:serverpod/serverpod.dart';
    
    class MyService extends PodService {
      @PodEndpoint(method: 'GET', path: '/hello')
      Future<String> hello() async {
        return 'Hello, Serverpod!';
      }
    }
    
  4. 启动Serverpod后端

    serverpod文件夹下运行以下命令来启动Serverpod后端:

    dart run
    

在Flutter前端调用Serverpod后端

  1. 配置客户端

    在你的Flutter项目的lib目录下,创建一个Dart文件(例如serverpod_client.dart),并配置Serverpod客户端:

    import 'package:serverpod/client.dart';
    
    class MyServerpodClient {
      late final ServerpodClient client;
    
      MyServerpodClient(String url) {
        client = ServerpodClient(
          url: url,
          // 可以根据需要配置其他选项,如认证等
        );
      }
    
      Future<String> hello() async {
        var response = await client.request(
          path: '/hello',
          method: RequestMethod.get,
        );
        return response.data as String;
      }
    }
    
  2. 在Flutter UI中调用后端

    在你的Flutter UI组件中(例如main.dart),使用Serverpod客户端来调用后端服务:

    import 'package:flutter/material.dart';
    import 'serverpod_client.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Serverpod Example'),
            ),
            body: Center(
              child: FutureBuilder<String>(
                future: _fetchHello(),
                builder: (context, snapshot) {
                  if (snapshot.connectionState == ConnectionState.waiting) {
                    return CircularProgressIndicator();
                  } else if (snapshot.hasError) {
                    return Text('Error: ${snapshot.error}');
                  } else {
                    return Text('Response: ${snapshot.data}');
                  }
                },
              ),
            ),
          ),
        );
      }
    
      Future<String> _fetchHello() async {
        var client = MyServerpodClient('http://localhost:8080'); // 替换为你的Serverpod后端URL
        return await client.hello();
      }
    }
    

运行你的Flutter应用

现在,你可以运行你的Flutter应用,并查看它如何与Serverpod后端进行交互:

flutter run

这个示例展示了如何在Flutter项目中设置和使用Serverpod作为后端服务插件。你可以根据需要扩展和自定义这个示例,以满足你的具体需求。

回到顶部