我在登录时遇到了问题,没有显示数据库中的数据,似乎问题是获取数据的函数,但我不知道问题在哪里
这是从数据库获取数据的函数:
Future<void> fetchProperties() async {
  final url = Uri.https(
      'aqarlibya-4d39c-default-rtdb.europe-west1.firebasedatabase.app',
      '/properties.json?auth=$authToken');
  try {
    final response = await http.get(url);
    final extractedData = json.decode(response.body) as Map<String, dynamic>?;
    if (extractedData == null) {
      return;
    }
    final List<Property> loadedProperties = [];
    extractedData.forEach((propId, propData) {
      loadedProperties.add(Property(
        id: propId,
        name: propData['name'],
        description: propData['description'],
        type: propData['type'],
        propertySize: propData['propertySize'],
        bedrooms: propData['bedrooms'],
        price: propData['price'],
        cityId: propData['cityId'],
        imageUrl: propData['imageUrl'],
        isFav: propData['isFav'],
      ));
    });
    _items = loadedProperties;
    notifyListeners();
  } catch (error) {
    throw (error);
  }
}这是主文件中代码的一部分:
Widget build(BuildContext context) {
return MultiProvider(
  providers: [
    ChangeNotifierProvider.value(
      value: Auth(),
    ),
    ChangeNotifierProxyProvider<Auth, Properties>(
      create: (ctx) => Properties('', []),
      update: (ctx, auth, previousProperties) => Properties(
        auth.token,
        previousProperties == null ? [] : previousProperties.items,
      ),
    ),
  ],我试着找那个问题,但找不到

发布于 2022-11-07 14:26:52
从Uri.https的文档中可以看到,您需要在可选的第三个参数中传递参数。所以:
final url = Uri.https(
   'aqarlibya-4d39c-default-rtdb.europe-west1.firebasedatabase.app',
   '/properties.json',
   { 'auth': authToken }
);发布于 2022-11-07 13:29:08
你确定你的网址和记号是好的吗?
似乎你试图破解一些不是json的东西。您调用的价值回报似乎是“找不到”。
尝试添加一个try {} catch(e) {}并打印response以获得更好的错误视图。
https://stackoverflow.com/questions/74347181
复制相似问题