简体   繁体   English

flutter api 返回数据但在 listviewbuilder 中不起作用

[英]flutter api returning data but its not workin in listviewbuilder

I'm tryig to solve an error in flutter list view builder once im calling my api functions its showing me the exact data i want, but when im giving the variable to listview builder it showing null value on that variable.我正在尝试解决 flutter 列表视图生成器中的错误,一旦我调用我的 api 函数,它会向我显示我想要的确切数据,但是当我将变量提供给列表视图生成器时,它会显示该变量的 null 值。

// import 'package:asanhisab/models/ledger_model.dart';
import 'package:asanhisab/utils/helper.dart';
import 'package:flutter/material.dart';
import 'package:odoo_api/odoo_api.dart';
import 'package:asanhisab/services/remoteservices.dart';

class GeneralLedgerScreen extends StatefulWidget {
  const GeneralLedgerScreen({Key? key}) : super(key: key);

  @override
  State<GeneralLedgerScreen> createState() => _GeneralLedgerScreenState();
}

class _GeneralLedgerScreenState extends State<GeneralLedgerScreen> {
  List? ledger;
  bool isloaded = false;
  @override
  void initState() {
    super.initState();
    getLedgerData();
  }

  getLedgerData() async {
    var ledger = await RemoteServices().getLedgerData();
    if (ledger != null) {
      setState(() {
        isloaded = true;
      });
    }
    logger.d(ledger.length);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('General Ledger'),
      ),
      body: Scrollbar(
        // child: Center(child: CircularProgressIndicator()),
        child: Center(
          child: Visibility(
            visible: isloaded,
            // ignore: sort_child_properties_last
            child: ListView.builder(
              itemCount: ledger?.length,
              itemBuilder: (context, index) {
                logger.d(ledger);
                return Card(
                  child: ListTile(
                    leading: const Icon(Icons.payment),
                    title: Text(index.toString()),
                    subtitle: const Text('Name'),
                    iconColor: Colors.blue,
                    isThreeLine: true,
                    trailing: const Text('1000'),
                    onTap: () {},
                  ),
                );
              },
            ),
            replacement: const CircularProgressIndicator(),
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton.extended(
        label: const Text('Create'),
        icon: const Icon(Icons.add),
        backgroundColor: Colors.blue,
        onPressed: () {
          // Get.to(() => const CreateAccountHead());
        },
      ),
    );
  }
}

  getLedgerData() async {
    var client = OdooClient(storage.read('link'));
    var authres = await client.authenticate(storage.read('email'),
        storage.read('password'), storage.read('dbname'));
    if (authres.isSuccess) {
      var data = await client
          .callKW('ah_general_ledger.ah_account_head', 'search_read', []);
      if (data.getStatusCode() == 200) {
        return data.getResult();
      } else {
        logger.d('Error Occured while fetching data');
        // errorAlert(context, 'Error Occured while fetching data');
      }
    } else {
      logger.d('Error Occured');
      // errorAlert(context, 'Error Occured');
    }
    return null;
  }

I'm tryig to solve an error in flutter list view builder once im calling my api functions its showing me the exact data i want, but when im giving the variable to listview builder it showing null value on that variable.我正在尝试解决 flutter 列表视图生成器中的错误,一旦我调用我的 api 函数,它会向我显示我想要的确切数据,但是当我将变量提供给列表视图生成器时,它会显示该变量的 null 值。

This is because your are redefined ledger in getLedgerData() , you should use your attribute instead.这是因为您在getLedgerData()中重新定义了ledger ,您应该改用您的属性。

getLedgerData() async {
    ledger = await RemoteServices().getLedgerData(); // remove var here at the beginning
    if (ledger != null) {
      setState(() {
        isloaded = true;
      });
    }
    logger.d(ledger.length);
  }

You can also use private field for your ledger and isloaded by adding _ caracter as prefix.您还可以为ledger使用isloaded字段,并通过添加 _ 字符作为前缀来加载。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我如何在 Flutter 的 api 响应数据上方向 listViewbuilder 显示保存的收藏夹项目? - How i can show a saved fav items to listViewbuilder above the api response data in Flutter? FLUTTER+SQL:在 ListViewBuilder 中显示数据库中的数据 - FLUTTER+SQL: display Data from Database in ListViewBuilder 在 Flutter 中带有 ListViewBuilder 和 Header 的抽屉 - Drawer with ListViewBuilder and Header in Flutter 将 ListViewBuilder 与 flutter 中的一行一起使用 - Using a ListViewBuilder with a row in flutter 过滤 Streambuilder/ listviewBuilder flutter - filtering Streambuilder/ listviewBuilder flutter Dart、Flutter、Future Builder、ListViewBuilder - Dart, Flutter, Future Builder, ListViewBuilder Flutter中如何过滤更新ListViewBuilder? - How to filter and update ListViewBuilder in Flutter? 如何在 flutter 的列表视图构建器中清除对象? - How to clear objects in a listviewbuilder in flutter? 在 Flutter 中使用 ListViewBuilder 中的动态 TextField - Use dynamic TextField in ListViewBuilder in Flutter Flutter:如何使用 ListViewBuilder 在 streambuilder/futurebuilder 中从 firebase 实时数据库中获取(全部)子数据? - Flutter: How to fetch (all) of a child data from firebase realtime database in streambuilder/futurebuilder with ListViewBuilder?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM