打开屏幕并突然显示列表时,getter 'stream' 被调用为 null

时间:2021-06-03 14:26:36

标签: flutter dart

我有一个从流中获取数据的屏幕,这是我的 initState:

  @override
  void initState() {
    print('initState priceList');
    _tableController.loadTables().then((_) {
      setState(() {
        _isLoading = false;
      });
      priceController = PriceController(_tableController.items[0]['codigo'], 'PRICE'); // This controller returns the stream
    });

    scrollController.addListener(() {
      if (scrollController.position.maxScrollExtent ==
          scrollController.offset) {
        priceController.loadMore();
      }
    });

    super.initState();
  }

当我点击打开屏幕时,它会抛出此错误:

<块引用>

getter 'stream' 被调用为 null。 接收器:空 尝试调用:流

几秒钟后,错误消失,屏幕按预期显示。如何不显示错误?

UPDATE > 使用流的地方:

Expanded(
            child: StreamBuilder(
              stream: priceController.stream,
              builder: (ctx, snapshot) {
                if (snapshot.error != null) {
                  print(snapshot.error.toString());
                  return Center(
                    child: Text(snapshot.error.toString()),
                  );
                } else if (!snapshot.hasData) {
                  return Center(
                    child: CircularProgressIndicator(),
                  );
                }
                else if (snapshot.data.length == 0) {
                  return Center(
                    child: Text('0 items!'),
                  );
                }
                else {
                  return RefreshIndicator(
                    onRefresh: priceController.refresh,
                    child: ListView.builder(
....

1 个答案:

答案 0 :(得分:1)

你在哪里调用stream?,在build方法中,你可以检查它是否为空。

(stream == null) ? Container() : ....