Flutter错误:构建时抛出以下NoSuchMethodError

Joe*_*Joe 3 dart flutter

我是 flutter 新手,每次运行应用程序时都会出现错误:

\n
\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1 EXCEPTION CAUGHT BY WIDGETS LIBRARY \xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\nThe following NoSuchMethodError was thrown building DataList(dirty, dependencies:\n[_InheritedProviderScope<List<Store>>], state: _DataListState#67e37):\nThe getter 'length' was called on null.\nReceiver: null\nTried calling: length\nThe relevant error-causing widget was:\n  DataList\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的数据列表文件:

\n
class DataList extends StatefulWidget {\n  @override\n  _DataListState createState() => _DataListState();\n}\n\nclass _DataListState extends State<DataList> {\n  @override\n  Widget build(BuildContext context) {\n    final stores = Provider.of<List<Store>>(context);\n\n    // stores.forEach((d) {\n    //   print(d.name);\n    // });\n\n    return ListView.builder(\n      itemCount: stores.length,\n      itemBuilder: (context, index) {\n        return StoreTile(store: stores[index]);\n      },\n    );\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在我登录并显示商店列表后会发生这种情况。\n我已打印stores.length并返回 6,但无论出于何种原因,应用程序找到 anull并引发错误。

\n

请注意,应用程序上的屏幕显示正确,但在调试控制台中我收到此错误。

\n

感谢任何帮助\n乔

\n

Jid*_*uru 5

您的提供商似乎需要一些时间来获取商店列表,因此stores暂时为空。您可以在为空时显示进度指示器,stores然后显示数据

class _DataListState extends State<DataList> {
  @override
  Widget build(BuildContext context) {
    final stores = Provider.of<List<Store>>(context);

    // stores.forEach((d) {
    //   print(d.name);
    // });

    return stores == null 
            ? Center(child: CircularProgressIndicator())
            : ListView.builder(
      itemCount: stores.length,
      itemBuilder: (context, index) {
        return StoreTile(store: stores[index]);
      },
    );
  }
}
Run Code Online (Sandbox Code Playgroud)