State Management Part 3

Untuk update list atau grid melalui state management bisa menyebabkan bug. Contoh product id pada list tidak diload dengan baik.

Untuk mengatasi masalah ini, maka untuk list atau grid pendekatan yang digunakan adalah menggunakan property value, bukan property create.

...
...
itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
    value: products[i], child: ProductItem()));
...
...
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

import '../models/products_provider.dart';
import './product_item.dart';

class ProductViewScr extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AZShop'),
      ),
      body: ProductsGrid(),
    );
  }
}

class ProductsGrid extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final products = Provider.of<ProductsProvider>(context).productsList;
    return GridView.builder(
        padding: const EdgeInsets.all(8),
        itemCount: products.length,
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 2,
            childAspectRatio: 3 / 2,
            crossAxisSpacing: 8,
            mainAxisSpacing: 8),
        itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
            value: products[i], child: ProductItem()));
  }
}
Sharing is caring:

Leave a Comment