以下断言被抛出构建 StreamBuilder<QuerySnapshot>(dirty, state: _StreamBuilderBaseState<QuerySnapshot, AsyncSnapshot [英] The following assertion was thrown building StreamBuilder&lt;QuerySnapshot&gt;(dirty, state: _StreamBuilderBaseState&lt;QuerySnapshot, AsyncSnapshot

查看:27
本文介绍了以下断言被抛出构建 StreamBuilder<QuerySnapshot>(dirty, state: _StreamBuilderBaseState<QuerySnapshot, AsyncSnapshot的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的多供应商应用程序中收到此错误.当我在应用程序中添加新产品时.它转到未发布部分,然后您必须从那里发布它.当我添加单个产品时没有问题(我猜是因为它没有发生在单个产品上.)但是当我添加第二个产品并转到未发布的页面时,我收到此错误.'''

I am getting this error in my multivendor applicaiton. When i add a new Product in the application. It goes to unpublished section and then you have to publish it from there. When i add a single product there is no problem ( I guess becuase it didnt happen with a single product.) But when i add the second product and go to unpublished page i get this error. '''

    The following assertion was thrown building StreamBuilder<QuerySnapshot>(dirty, state:
                _StreamBuilderBaseState<QuerySnapshot, AsyncSnapshot<QuerySnapshot>>#c1af9):
                A non-null String must be provided to a Text widget.
                'package:flutter/src/widgets/text.dart':
                Failed assertion: line 378 pos 10: 'data != null'

                The relevant error-causing widget was:
                  StreamBuilder<QuerySnapshot>
                  
         file:///I:/AAAAAAYy/Vendor1/grocery_vendor_app/lib/widgets/unpublished_products.dart:11:14

                When the exception was thrown, this was the stack:
                #2      new Text (package:flutter/src/widgets/text.dart:378:10)
                #3      UnPublishedProducts._productDetails.<anonymous closure>
    (package:grocery_vendor_app/widgets/unpublished_products.dart:66:30)
                #4      MappedListIterable.elementAt (dart:_internal/iterable.dart:411:31)
                #5      ListIterator.moveNext (dart:_internal/iterable.dart:340:26)
                #6      new _GrowableList._ofEfficientLengthIterable (dart:core- 
                patch/growable_array.dart:188:27)
                #7      new _GrowableList.of (dart:core-patch/growable_array.dart:150:28)
                #8      new List.of (dart:core-patch/array_patch.dart:50:28)
                #9      ListIterable.toList (dart:_internal/iterable.dart:211:44)
                #10     UnPublishedProducts._productDetails 
      (package:grocery_vendor_app/widgets/unpublished_products.dart:110:8)                    #11     
        UnPublishedProducts.build.<anonymous closure>
      (package:grocery_vendor_app/widgets/unpublished_products.dart:43:23)
                #12     StreamBuilder.build (package:flutter/src/widgets/async.dart:545:81)
                #13     _StreamBuilderBaseState.build (package:flutter/src/widgets/async.dart:124:48)
                #14     StatefulElement.build (package:flutter/src/widgets/framework.dart:4612:27)
                #15     ComponentElement.performRebuild 
      (package:flutter/src/widgets/framework.dart:4495:15)
                #16     StatefulElement.performRebuild 
       (package:flutter/src/widgets/framework.dart:4667:11)
                #17     Element.rebuild (package:flutter/src/widgets/framework.dart:4189:5)
                #18     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2694:33)
                #19     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:873:21)
                #20     RendererBinding._handlePersistentFrameCallback 
         (package:flutter/src/rendering/binding.dart:319:5)
                #21     SchedulerBinding._invokeFrameCallback 
   (package:flutter/src/scheduler/binding.dart:1144:15)
                #22     SchedulerBinding.handleDrawFrame 
      (package:flutter/src/scheduler/binding.dart:1082:9)
                #23     SchedulerBinding._handleDrawFrame 
     (package:flutter/src/scheduler/binding.dart:998:5)
                #27     _invoke (dart:ui/hooks.dart:161:10)
                #28     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:253:5)
                #29     _drawFrame (dart:ui/hooks.dart:120:31)
                (elided 5 frames from class _AssertionError and dart:async)

'''

     Here is  my code

'''

  class UnPublishedProducts extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 FirebaseServices _services = FirebaseServices();
 return Container(
  child: StreamBuilder(
    stream:
        _services.products.where('published', isEqualTo: 
  false).snapshots(),
    builder: (context, snapshot) {
      if (snapshot.hasError) {
        return Text('Something went wrong..');
      }
      if (snapshot.connectionState == ConnectionState.waiting) {
        return Center(
          child: CircularProgressIndicator(),
        );
      }
      return SingleChildScrollView(
        child: FittedBox(
          child: DataTable(
            showBottomBorder: true,
            dataRowHeight: 60,
            headingRowColor: MaterialStateProperty.all(Colors.grey[200]),
            columns: <DataColumn>[
              DataColumn(
                label: Expanded(child: Text('Jobs')),
              ),
              DataColumn(
                label: Text('Image'),
              ),
              DataColumn(
                label: Text('Info'),
              ),
              DataColumn(
                label: Text('Actions'),
              ),
            ],
            rows: _productDetails(snapshot.data, context),
          ),
        ),
      );
    },
  ),
   );
 }

 List<DataRow> _productDetails(QuerySnapshot snapshot, context) {
 List<DataRow> newList = snapshot.docs.map((DocumentSnapshot document) {
   if (document != null) {
    return DataRow(cells: [
      DataCell(Container(
        child: ListTile(
          contentPadding: EdgeInsets.zero,
          title: Row(
            children: [
              Text(
                'Name: ',
                style: TextStyle(fontWeight: FontWeight.bold, fontSize: 
    15),
              ),
              Expanded(
                  child: Text(document.data()['productName'],
                      style: TextStyle(fontSize: 15))),
            ],
          ),
          subtitle: Row(
            children: [
              Text(
                'SKU: ',
                style: TextStyle(fontWeight: FontWeight.bold, fontSize: 
   12),
              ),
              Text(document.data()['sku'], style: TextStyle(fontSize: 
    12)),
            ],
          ),
        ),
      )),
      DataCell(Container(
        child: Padding(
          padding: const EdgeInsets.all(3.0),
          child: Row(
            children: [
              Image.network(
                document.data()['productImage'],
                width: 50,
              ),
            ],
          ),
        ),
      )),
      DataCell(IconButton(
        onPressed: () {
          Navigator.push(
            context,
            MaterialPageRoute(
              builder: (context) => EditViewProduct(
                productId: document.data()['productId'],
              ),
            ),
          );
        },
        icon: Icon(Icons.info_outline),
      )),
      DataCell(popUpButton(document.data())),
    ]);
  }
 }).toList();
 return newList;
  }
 
  Widget popUpButton(data, {BuildContext context}) {
  FirebaseServices _services = FirebaseServices();
 
  return PopupMenuButton<String>(
    onSelected: (String value) {
      if (value == 'publish') {
        _services.publishProduct(
          id: data['productId'],
        );
      }
  
      if (value == 'delete') {
        _services.deleteProduct(id: data['productId']);
      }
    },
    itemBuilder: (BuildContext context) => <PopupMenuEntry<String>>[
          const PopupMenuItem<String>(
            value: 'publish',
            child: ListTile(
              leading: Icon(Icons.check),
              title: Text('Publish'),
            ),
          ),
          const PopupMenuItem<String>(
            value: 'delete',
            child: ListTile(
              leading: Icon(Icons.delete_outline),
              title: Text('Delete job'),
            ),
          ),
        ]);
  }
 }

'''

推荐答案

document?.data()['productName'] ?? "-"

在所有键中使用空安全

document?.data()['your_key'] ?? "default data"

此处

这篇关于以下断言被抛出构建 StreamBuilder<QuerySnapshot>(dirty, state: _StreamBuilderBaseState<QuerySnapshot, AsyncSnapshot的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆