【问题标题】:Riverpod showing snackbar on Error and also last known list using statenotifierRiverpod 在错误上显示小吃栏以及使用 statenotifier 的最后一个已知列表
【发布时间】:2021-11-19 00:01:42
【问题描述】:

我正在使用riverpod ^1.0.0。我创建了一个扩展 Equatable 的 StateClass。在我的 StateNotifier 中,我根据事件和结果设置状态。一个是异步 http 请求,成功后设置

state=SalesOrderListSuccess(salesOrderListItems: _items);

在 http 客户端失败时,我将状态设置为:

state = SalesOrderListError(error: response.data);

这行得通,成功后它会在下面的 UI 构建器中呈现列表。它还使用 ref.listen 并显示小吃吧。但是,由于状态从 SalesOrderListSuccess 发生变化并且我正在使用 ref.watch,因此它似乎无法保留以前的已知列表和 UI。我如何在最后一个已知的 SalesOrderListSuccess/UI 上方显示小吃栏而不呈现一个全新的错误页面,该页面没有我已经设法在列表中呈现的所有项目?

基本上我不想更改列表,只需在发生 http 客户端错误之前在最后一个已知列表上方显示一个小吃吧。

这里是当前小部件:(这需要 SalesOrderListSuccess 状态才能显示列表)。

  @override
  Widget build(BuildContext context, WidgetRef ref) {    

    final todos = ref.watch(todoListProvider);
    final selectedtrack = ref.read(selectedProductIdProvider2.notifier);

    ref.listen(todoListProvider, (previous, count) {
      print(previous);
      print(count);
      switch (count.runtimeType) {
        case SalesOrderListError:
          ScaffoldMessenger.of(context).showSnackBar(
            const SnackBar(content: Text('Ohh no some error happend')),
          );
      }
    });

    return ListView.builder(
      shrinkWrap: true, // 1st add
      physics: ClampingScrollPhysics(),
      itemCount: (todos as SalesOrderListSuccess).salesOrderListItems.length,
      itemBuilder: (context, index) {
        final current=
            (todos as SalesOrderListSuccess).salesOrderListItems[index];
        return ListTile(
            title: Text('${current.title}'),
            onTap: () {
              selectedtrack.state = index;
              Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (context) => DetailScreen(),
                ),
              );
            });
      },
    );

  }

【问题讨论】:

标签: flutter riverpod


【解决方案1】:

您好,请查看riverpod_messages。 我遇到了同样的问题,我为此写了一个包

https://pub.dev/packages/riverpod_messages/versions/1.0.0

告诉我!

【讨论】:

    猜你喜欢
    • 2021-05-24
    • 2020-07-14
    • 1970-01-01
    • 2021-04-04
    • 2016-03-13
    • 2015-11-23
    • 1970-01-01
    • 2021-04-21
    • 2019-09-11
    相关资源
    最近更新 更多