[英]Bad state: No element, Flutter error. I'm trying to build a scrollable list inside the card. I've attested the screenshot
这是我试图以图像形式构建的内容。 请帮助我,我已经花了 7 个小时,找不到解决方案。
这是我得到的错误。
在构建 TeamList(脏,依赖项:[_ModalScopeStatus,_InheritedProviderScope,_InheritedTheme,_LocalizationsScope-[GlobalKey#92ce1],_InheritedProviderScope],state:_TeamListState#fba7a):Bad Z957639E2A69AEF428
相关的导致错误的小部件是:TeamList file:///E:/Flutter%20Projects/mobile%20app%2013/lib/Screens/TeamModule.dart:91:27
抛出异常时,这是堆栈:#0 ListMixin.firstWhere (dart:collection/list.dart:167:5) #1 ProjectProvider.chatById (package:vstudio/Providers/ProjectProvider.dart:309:26) 2 _TeamListState.build(包:vstudio/widgets/TeamList.dart:35:49)
这是我的代码
import 'package:provider/provider.dart';
import 'package:vstudio/Screens/AddTeamMember.dart';
import '../Providers/auth.dart';
import '../Providers/ProjectProvider.dart';
import '../Screens/ChatScreens/IndividualPage.dart';
import '../models/ChatModel/ChatModel.dart';
// ignore: must_be_immutable
class TeamList extends StatefulWidget {
final String? pId;
String? userId;
String? name;
final String? email;
String profession = 'Script Writer';
TeamList(
this.pId,
this.userId,
this.name,
this.email,
this.profession,
);
@override
_TeamListState createState() => _TeamListState();
}
class _TeamListState extends State<TeamList> {
@override
Widget build(BuildContext context) {
final ChatModel sourchat = Provider.of<Auth>(context).sourceChatUser;
final ChatModel? chatModel = (sourchat.id != widget.userId)
? Provider.of<ProjectProvider>(context).chatById(widget.userId)
: sourchat;
final projectId = ModalRoute.of(context)!.settings.arguments as String?;
return Dismissible(
key: ValueKey(widget.email),
background: Container(
color: Theme.of(context).errorColor,
child: Icon(
Icons.delete,
color: Colors.white,
size: 40,
),
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 20),
margin: EdgeInsets.symmetric(
horizontal: 15,
vertical: 4,
),
),
direction: DismissDirection.endToStart,
confirmDismiss: (direction) {
return showDialog(
context: context,
builder: (ctx) => AlertDialog(
title: Text('Are you sure?'),
content: Text(
'Do you want to remove the team member?',
),
actions: <Widget>[
TextButton(
child: Text('No'),
onPressed: () {
Navigator.of(ctx).pop(false);
},
),
TextButton(
child: Text('Yes'),
onPressed: () {
Navigator.of(ctx).pop(true);
},
),
],
),
);
},
onDismissed: (direction) {
Provider.of<ProjectProvider>(context, listen: false)
.removeTeamMember(widget.pId, widget.email);
},
child: Card(
margin: EdgeInsets.symmetric(
horizontal: 15,
vertical: 4,
),
child: Padding(
padding: EdgeInsets.all(0),
child: ListTile(
leading: CircleAvatar(
child: Padding(
padding: EdgeInsets.all(5),
child: FittedBox(
child: Text(widget.name![0].toUpperCase()),
),
),
),
title: Text(
widget.name!,
overflow: TextOverflow.ellipsis,
),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'profession: Scriptwriter',
textAlign: TextAlign.left,
),
Text(widget.email.toString(),
textAlign: TextAlign.left, overflow: TextOverflow.ellipsis),
],
),
trailing:
widget.userId != chatModel!.id || widget.userId != sourchat.id
? IconButton(
icon: Icon(Icons.message),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (contex) => IndividualPage(
chatModel: chatModel,
sourchat: sourchat,
)));
})
: IconButton(
icon: Icon(Icons.add),
onPressed: () => {
Navigator.of(context).pushNamed(
AddTeamMember.rounteName,
arguments: projectId),
}),
),
),
),
);
}
}
您在某些代码中使用 firstWhere 方法,可能在提供程序内的 chatById 方法中,
您可以通过添加orElse参数来避免此异常,如下所示:
list.firstWhere((a) => a == b, orElse: () => null);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.