![](/img/trans.png)
[英]Im getting these errors when Im trying to run Flutter from Visual Studio Code
[英]Flutter i keep getting Bad State: No element. when im trying to get my userId from previous screen
當我嘗試從以前的布局中獲取數據並將其用於我的提供商時,我不斷收到錯誤消息
這是我的 seller_profile_screen.dart 文件
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../models & providers/seller.dart';
class SellerProfileScreen extends StatefulWidget {
static const routeName = '/seller-profile-screen';
const SellerProfileScreen({Key? key}) : super(key: key);
@override
State<SellerProfileScreen> createState() => _SellerProfileScreenState();
}
class _SellerProfileScreenState extends State<SellerProfileScreen> {
@override
Widget build(BuildContext context) {
final userId = ModalRoute.of(context)!.settings.arguments as String;
final sellerProvider = Provider.of<SellerProvider>(context);
final seller = sellerProvider.getById(userId);
return Scaffold();
}
}
這是我的賣家提供商文件
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class Seller with ChangeNotifier {
final double joinedDate;
final String id;
final String imageUrl;
final String city;
final String name;
Seller({
required this.joinedDate,
required this.id,
required this.imageUrl,
required this.city,
required this.name,
});
}
class SellerProvider with ChangeNotifier {
List<Seller> _sellers = [];
Future<void> fetchProducts() async {
await FirebaseFirestore.instance
.collection('users')
.get()
.then((QuerySnapshot sellerSnapshot) {
_sellers = [];
for (var element in sellerSnapshot.docs) {
_sellers.insert(
0,
Seller(
joinedDate: double.parse(element.get('joinedDate')),
id: element.get('id'),
imageUrl: element.get('imageUrl'),
city: element.get('location'),
name: element.get('name'),
),
);
}
});
}
List<Seller> sellers() => _sellers;
Seller getById(String userId) {
return _sellers.firstWhere((element) => element.id == userId);
}
List<Seller> getBySearch(String search) {
List<Seller> sellList = _sellers
.where((element) =>
element.name.toLowerCase().contains(search.toLowerCase()))
.toList();
notifyListeners();
return sellList;
}
}
這就是我想在我以前的文件中獲取數據時所做的
onTap: () {
Navigator.of(context).pushNamed(
SellerProfileScreen.routeName,
arguments: widget.product.userId);
},
那是在我的手勢檢測器中
但是當我刪除或在我的final seller = sellerProvider.getById(userId);
錯誤消失了,但我無法從中獲取數據
這就是調試控制台所說的
════════ Exception caught by widgets library ═══════════════════════════════════
Bad state: No element
The relevant error-causing widget was
SellerProfileScreen
lib\main.dart:87
我已經很確定我從以前的布局中得到了我的 id 但這段代碼一直給我一個錯誤的 state L 沒有元素
final seller = sellerProvider.getById(userId);
錯誤消息意味着您的代碼( firstWhere
函數)找不到任何具有所提供 ID 的賣家。 仔細檢查 Firebase 中是否存在這樣的賣家。我還建議在您的應用程序中可能發生這種情況時進行處理。
還有一些方法可以幫助您,例如firstWhereOrNull
而不是firstWhere
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.