繁体   English   中英

坏 state:没有元素,Flutter 错误。 我正在尝试在卡片内建立一个可滚动的列表。 我已经证明了截图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM