0

こんにちは、私はプロバイダーが初めてです。ここに問題がある場所に手順を書きました。1-その後、モデルクラスにデータを持っているapiを呼び出しました。2-次にChangeNotiferクラスで、Modelクラスオブジェクトにあるリストのゲッターを作成したいと思います。モデル クラスの応答データをこの getter 変数に追加できません。

class CartProductNotifier with ChangeNotifier{

final _webServices = WebServices();
GetProductDetailsModel _getProductDetailsModel;
List<Vd> _vdList = [];

callApi(String handle) {
    return _webServices.getProductDetails(handle).then((value) {
      _getProductDetailsModel = value;
      _vdList = value.data.product.vd; // after api call done data is in _vdList
      return value;
    });
  }

}

今私はゲッターを作成しています

List<Vd> get vdata {
   return _vdList;
 }

しかし、ProductDetailsS​​creenクラスからこのゲッターを呼び出すと、空の配列または null が取得されます。

 Consumer<CartProductListNotifier>(
                  builder: (context, value, child) {
                    return Text(
                       value.vdata[index].quantitySelectedByUser.toString(),  //data is not coming here
                    style: TextStyle(
                    fontSize: kFontSize16, fontWeight: kMediumFontWeight, color: Colors.black),
                    );
                  },
                ),

現在、Consumer notifier にある Text ウィジェットの値を更新できません。

これは私のメインです.dart

MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (context) => CartProductListNotifier(),
        ),
      ],
      child: MaterialApp(
        title: 'Application',
        debugShowCheckedModeBanner: false,

この問題を解決するか、プロバイダーを使用してモデル クラスで Api を呼び出す別の良い方法を教えてください。前もって感謝します。

4

2 に答える 2

0

APIを呼び出した後にsetData関数を呼び出すと、問題が解決され、_vdListで結果が得られます。

setData(GetProductDetailsModel _productModel) {
   _getProductDetailsModel = _productModel;
   _vdList = _productModel.data.product.vd;
   _voList = _productModel.data.product.vo;
   notifyListeners();
 }
于 2021-05-03T04:52:10.323 に答える