[英]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.