我正在尝试使用 Flutter 访问 Supabase 数据库中的外键字段。当我在 Supabase 仪表板上查看时,所有表行都没有空值,但是,当我在模拟器中运行应用程序时,我在第 53 行收到异常(标题:Text(data['payee(name)' ]),)我不明白为什么。检查侧边栏中的变量显示
我的观点的代码如下:
class HomePage extends StatelessWidget {
HomePage({super.key});
final SupabaseClient supabase = Supabase.instance.client;
Future<List> readData() async {
final result = await supabase.from('transactions').select('''
id,
date,
amount,
payee_id (name)
''');
return result;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Supabase Course'),
actions: [
IconButton(
onPressed: () async {
await supabase.auth.signOut();
},
icon: const Icon(Icons.logout),
)
],
),
body: FutureBuilder(
future: readData(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasError) {
return Center(
child: Text(snapshot.error.toString()),
);
}
if (snapshot.hasData) {
if (snapshot.data.length == 0) {
return const Center(
child: Text("No data available.\n Create new data"),
);
}
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
var data = snapshot.data[index];
return ListTile(
title: Text(data['payee(name)']), // <---error here!
trailing: IconButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
EditPage(data['id'].toString(), data['id'])));
},
icon: const Icon(Icons.chevron_right_outlined),
),
);
},
);
}
return const Center(
child: CircularProgressIndicator(),
);
},
),
);
}
}
我在第 53 行收到的错误是“_TypeError(类型‘Null’不是类型‘String’的子类型)”,但是,正如我所说,表中没有空值,并且变量检查器没有显示任何空值。空值。我无法弄清楚问题是什么。
我在您的数据中没有看到收款人(姓名)的键。 只是 payee_id(姓名)。