You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter Supabase中创建表并添加数据行(无需SQL编辑器)

在Flutter中直接操作Supabase创建数据表并插入数据

前置说明

创建数据表需要Supabase的服务角色密钥(在控制台「Settings → API」页面获取),这个密钥拥有最高权限,绝对不能在生产环境的前端代码中暴露,测试环境可以临时使用,生产建议通过自建后端接口中转操作。


1. 初始化Supabase客户端

使用服务角色密钥初始化客户端,确保拥有建表权限:

import 'package:supabase_flutter/supabase_flutter.dart';

final supabase = SupabaseClient(
  '你的Supabase项目URL',
  '你的服务角色密钥',
);

2. 创建数据表

通过执行SQL语句直接创建表,用CREATE TABLE IF NOT EXISTS避免重复创建报错:

Future<void> createUserProfileTable() async {
  final result = await supabase.execute(
    sql: '''
    CREATE TABLE IF NOT EXISTS user_profiles (
      id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
      username TEXT NOT NULL UNIQUE,
      email TEXT NOT NULL UNIQUE,
      bio TEXT,
      created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
    );
    ''',
    options: const FetchOptions(method: HttpMethod.post),
  );

  if (result.error != null) {
    print('建表失败: ${result.error!.message}');
  } else {
    print('表创建成功/已存在');
  }
}

3. 插入数据行

表创建完成后,直接用Supabase的insert方法添加数据:

Future<void> addUserProfile() async {
  final result = await supabase.from('user_profiles').insert({
    'username': 'jane_smith',
    'email': 'jane@example.com',
    'bio': 'Flutter开发者',
  });

  if (result.error != null) {
    print('插入失败: ${result.error!.message}');
  } else {
    print('数据插入成功');
  }
}

关键注意事项

  • 服务角色密钥是敏感信息,生产环境必须通过后端代理执行建表操作,前端只调用后端接口。
  • 建表时要明确字段类型、约束(主键、唯一键、非空),避免后续结构变更的麻烦。
  • 实际项目中要完善异常捕获和用户友好的错误提示,不要只打印日志。

内容的提问来源于stack exchange,提问作者Abdul Basit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:20:37