繁体   English   中英

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

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

我正在尝试解决 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;
  }

我正在尝试解决 flutter 列表视图生成器中的错误,一旦我调用我的 api 函数,它会向我显示我想要的确切数据,但是当我将变量提供给列表视图生成器时,它会显示该变量的 null 值。

这是因为您在getLedgerData()中重新定义了ledger ,您应该改用您的属性。

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

您还可以为ledger使用isloaded字段,并通过添加 _ 字符作为前缀来加载。

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM