为什么我的提供程序没有按应有的方式捕获数据?以前工作正常,现在不是这样 我收到此错误
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,
});
}
数据库中有数据
完整输出
_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中:“品牌”实例