提供程序未获取数据并在抖动的网络上获取异常

时间:2020-09-21 21:26:52

标签: flutter google-cloud-firestore stream flutter-web provider

为什么我的提供程序没有按应有的方式捕获数据?以前工作正常,现在不是这样 我收到此错误

EXCEPTION CAUGHT BY WIDGETS LIBRARY 
The following JSNoSuchMethodError was thrown building LayoutBuilder:
TypeError: _brandsList is null

完成错误后,我得到了令人满意的结果,如下所示。 这是简单的代码

class MainDataProvider extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        StreamProvider<List<Brand>>.value(
        value: DatabaseService().getAllBrands,
      ],
      child: MaterialApp(
        home: HomeView(),
      ),
    );
  }
}

class HomeView extends StatefulWidget {
  @override
  _HomeViewState createState() => _HomeViewState();
}

class _HomeViewState extends State<HomeView> {
  @override
  Widget build(BuildContext context) {
     final _brandsList = Provider.of<List<Brand>>(context);
// --- WHY IT IS PRINTING NULL. IT SHOULD HAVE DATA
_brandsList != null
        ? print("---> _brandsList [0] inside HomeView: "+ _brandsList[0].toString())
        : print("_brandsList is NULL");
 
return Material(
...........
    );
           }
}
 Stream<List<Brand>> get getAllBrands {
    return FirebaseFirestore.instance.collection('brand').get().asStream().map(_brandDataFromSnapshot);
  }

  List<Brand> _brandDataFromSnapshot(QuerySnapshot snapshot) {
    List<Brand> brandList = List<Brand>();
 
    for (int i = 0; i < snapshot.docs.length; i++) {
      brandList.add(Brand(
        brandID: snapshot.docs[i].data()['brandID'] ?? "",
        name: snapshot.docs[i].data()['name'] ?? "",
      ));
    }
    return brandList;
  }

class Brand {
  String brandID;
  String name;
  DateTime addDate;
  String logo;

  Brand({
    this.brandID,
    this.name,
    this.logo,
    this.addDate,
  });
}

数据库中有数据

enter image description here

完整输出

_brandsList为NULL

══╡小工具库引起的异常>╞═════════════════════════════════════ ══════════════════════ 在构建LayoutBuilder时引发了以下JSNoSuchMethodError: TypeError:_productInfolist为null 相关的引起错误的小部件是: LayoutBuilder 文件:/// D:/CIIT%20GUIDE/Flutter/Apps/storeifie_admin_panel/lib/ui/response/sensitiveBuilder.dart:14:12 引发异常时,这是堆栈: 包/storeifie_admin_panel/ui/response/sensitiveBuilder.dart.js 70:23 软件包/flutter/src/widgets/layout_builder.dart.js 122:118 软件包/flutter/src/widgets/widget_span.dart.js 43355:13 buildScope js_primitives.dart:30:41 包/flutter/src/widgets/layout_builder.dart.js 117:20 [_layout] js_primitives.dart:30:41 包/flutter/src/rendering/layer.dart.js 3265:19包/flutter/src/scheduler/binding.dart.js 708:28
handleBeginFrame js_primitives.dart:30:41 包/flutter/src/scheduler/binding.dart.js 672:12
[_handleBeginFrame] js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/window.dart 776:13 _invoke1 js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/window.dart 328:5 invokeOnBeginFrame js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine.dart 218:18 js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 32110:3
FrameRequestCallback * [__ requestAnimationFrame] js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 32096:12 requestAnimationFrame] js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine.dart 206:19 js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/window.dart 179:5 scheduleFrame js_primitives.dart:30:41 包/flutter/src/scheduler/binding.dart.js 614:19
scheduleFrame js_primitives.dart:30:41 包/flutter/src/scheduler/binding.dart.js 516:12
scheduleFrameCallback js_primitives.dart:30:41 软件包/flutter/src/scheduler/ticker.dart.js 142:78
scheduleTick js_primitives.dart:30:41 软件包/flutter/src/scheduler/ticker.dart.js 135:52
[_tick] js_primitives.dart:30:41 软件包/flutter/src/scheduler/binding.dart.js 756:17
[_invokeFrameCallback] js_primitives.dart:30:41 包/flutter/src/scheduler/binding.dart.js 711:85
js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 21:13 forEach js_primitives.dart:30:41 包/flutter/src/scheduler/binding.dart.js 708:28
handleBeginFrame js_primitives.dart:30:41 包/flutter/src/scheduler/binding.dart.js 672:12
[_handleBeginFrame] js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/window.dart 776:13 _invoke1 js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/window.dart 328:5 invokeOnBeginFrame js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine.dart 218:18 js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 32110:3
FrameRequestCallback * [__ requestAnimationFrame] js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 32096:12 requestAnimationFrame] js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine.dart 206:19 js_primitives.dart:30:41 C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/window.dart 179:5 scheduleFrame js_primitives.dart:30:41

---> _brandsList [0]在HomeView中:“品牌”实例

0 个答案:

没有答案