Flutter数据库与后端服务集成插件supabase_addons_flutter的使用

Flutter数据库与后端服务集成插件supabase_addons_flutter的使用

supabase_flutter_addons

使用强大的后端构建出色的应用!

安装 #

pubspec.yaml文件中添加依赖:

dependencies:
  supabase: <latest-version>
  supabase_addons: <latest-version>
  supabase_flutter_addons: <latest-version>

然后导入所需的包:

import 'package:supabase/supabase.dart';
import 'package:supabase_addons/supabase_addons.dart';
import 'package:supabase_flutter_addons/supabase_flutter_addons.dart';

开始使用 #

首先初始化插件:

await SupabaseAddonsFlutter.initialize(
  client: SupabaseClient(SUPABASE_URL, SUPABASE_SECRET),
);

这样就完成了基本配置。你可以开始使用supabase_flutter_addons来开发你的应用了!

完整示例Demo

以下是一个完整的示例,展示了如何使用supabase_flutter_addons进行基本操作。

初始化

import 'package:flutter/material.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:supabase_addons/supabase_addons.dart';
import 'package:supabase_flutter_addons/supabase_flutter_addons.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 设置你的Supabase URL和密钥
  const String SUPABASE_URL = 'your-supabase-url';
  const String SUPABASE_SECRET = 'your-supabase-secret';

  // 初始化插件
  await SupabaseAddonsFlutter.initialize(
    client: SupabaseClient(SUPABASE_URL, SUPABASE_SECRET),
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

基本操作

class HomeScreen extends StatefulWidget {
  [@override](/user/override)
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final _formKey = GlobalKey<FormState>();
  final _emailController = TextEditingController();
  final _passwordController = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Supabase Addons Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: [
              TextFormField(
                controller: _emailController,
                decoration: InputDecoration(labelText: 'Email'),
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return '请输入邮箱';
                  }
                  return null;
                },
              ),
              SizedBox(height: 16),
              TextFormField(
                controller: _passwordController,
                obscureText: true,
                decoration: InputDecoration(labelText: '密码'),
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return '请输入密码';
                  }
                  return null;
                },
              ),
              SizedBox(height: 24),
              ElevatedButton(
                onPressed: () async {
                  if (_formKey.currentState!.validate()) {
                    try {
                      final response = await SupabaseAuth.signIn(
                        email: _emailController.text,
                        password: _passwordController.text,
                      );
                      ScaffoldMessenger.of(context).showSnackBar(
                        SnackBar(content: Text('登录成功')),
                      );
                    } catch (e) {
                      ScaffoldMessenger.of(context).showSnackBar(
                        SnackBar(content: Text('登录失败: $e')),
                      );
                    }
                  }
                },
                child: Text('登录'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _emailController.dispose();
    _passwordController.dispose();
    super.dispose();
  }
}

更多关于Flutter数据库与后端服务集成插件supabase_addons_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


当然,以下是一个关于如何在Flutter应用中使用supabase_addons_flutter插件来集成Supabase数据库与后端服务的示例代码。supabase_addons_flutter是一个扩展Supabase客户端功能的Flutter插件,提供了额外的实用功能,比如实时订阅、身份验证增强等。

首先,确保你已经在pubspec.yaml文件中添加了必要的依赖项:

dependencies:
  flutter:
    sdk: flutter
  supabase_flutter: ^latest_version  # 请使用最新版本
  supabase_addons_flutter: ^latest_version  # 请使用最新版本

然后,运行flutter pub get来安装这些依赖项。

接下来,在你的Flutter项目中,你需要初始化Supabase客户端,并使用supabase_addons_flutter提供的功能。以下是一个简单的示例,展示如何初始化客户端、进行身份验证、以及从数据库中读取数据。

import 'package:flutter/material.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:supabase_addons_flutter/supabase_addons_flutter.dart';

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

class MyApp extends StatelessWidget {
  final SupabaseClient supabase = SupabaseClient(
    url: 'YOUR_SUPABASE_URL',
    anonKey: 'YOUR_ANON_KEY',
  );

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Supabase Integration Example'),
        ),
        body: FutureBuilder<void>(
          future: _initializeApp(),
          builder: (context, snapshot) {
            if (snapshot.connectionState == ConnectionState.waiting) {
              return Center(child: CircularProgressIndicator());
            } else if (snapshot.hasError) {
              return Center(child: Text('Error: ${snapshot.error!}'));
            } else {
              return Center(child: DataFetcher());
            }
          },
        ),
      ),
    );
  }

  Future<void> _initializeApp() async {
    // 使用 Supabase 插件进行初始化
    await supabase.client.auth.signInAnonymously();
    print('User signed in anonymously: ${await supabase.client.auth.user()}');
  }
}

class DataFetcher extends StatefulWidget {
  @override
  _DataFetcherState createState() => _DataFetcherState();
}

class _DataFetcherState extends State<DataFetcher> {
  late final SupabaseAddons supabaseAddons;
  late Stream<List<dynamic>> stream;

  @override
  void initState() {
    super.initState();
    supabaseAddons = SupabaseAddons(supabaseClient: widget.supabase);

    // 订阅一个表的数据变化
    stream = supabaseAddons.from('your_table_name').on().subscribe();

    // 监听数据流
    stream.listen((data) {
      print('Received new data: $data');
      setState(() {}); // 如果需要在UI中显示数据,可以在这里更新状态
    });
  }

  @override
  Widget build(BuildContext context) {
    // 这里可以显示从Supabase获取的数据
    return Text('Listening for data changes...');
  }

  @override
  void dispose() {
    // 取消订阅
    stream.cancel();
    super.dispose();
  }
}

在这个示例中:

  1. 初始化Supabase客户端:在MyApp类中,我们创建了一个SupabaseClient实例,并使用匿名密钥进行身份验证。
  2. 数据订阅:在DataFetcher类中,我们使用supabase_addons_flutter插件的from方法订阅了一个表的数据变化。每当表中的数据发生变化时,我们都会收到一个更新,并在控制台中打印出来。

请注意,你需要将YOUR_SUPABASE_URLYOUR_ANON_KEY替换为你自己的Supabase项目URL和匿名密钥。

此外,supabase_addons_flutter插件提供了许多其他有用的功能,如实时身份验证状态监听、增强型查询构建器等,你可以根据项目的具体需求进行探索和使用。

回到顶部