最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

flutter - Riverpod State Issue: Counter Stops Updating When Another State Updates - Stack Overflow

programmeradmin1浏览0评论

I’m facing an issue with Riverpod where a counter that increments every second stops updating when another state (a list of orders) is updated. Here’s a simplified version of my code:

class Orders extends StatelessWidget {
  const Orders({
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    return Consumer(builder: (context, ref, _) {
      final orders = ref.watch(ordersProvider);

      return orders != null
          ? Expanded(
              child: ListView.separated(
                shrinkWrap: true,
                padding: const EdgeInsets.all(16),
                separatorBuilder: (context, i) => const SizedBox(
                  height: 18,
                ),
                itemBuilder: (context, index) {
                  final item = deliveries[index];
                  return OrderItem(
                    order: item,
                  );
                },
                itemCount: deliveries.take(5).length,
              ),
            )
          : const CircularLoader();
    });
  }
}
// Order provider
final ordersProvider =
    StateNotifierProvider<OrdersNotifier, List<OrderModel>?>((ref) {
  return OrdersNotifier();
});

class OrdersNotifier extends StateNotifier<List<OrderModel>?> {
  OrdersNotifier() : super(null);

  void updateDeliveries(List<dynamic> data) async {
    List<OrderModel> updatedOrders =
        data.map((order) => OrderModel.fromJson(order)).toList();
    updatedOrders.sort(
      (a, b) => b.createdAt!pareTo(a.createdAt!),
    );
    state = [...updatedOrders];
  }
}

I’ve ensured that the counter logic is isolated in its own provider:

发布评论

评论列表(0)

  1. 暂无评论