如何在颤振中将参数传递给函数?

时间:2021-04-30 12:39:02

标签: flutter

我有以下功能:

Future<List<expense>> getExpenseDateWise(DateTime FromDate, DateTime ToDate) async {
final db = await database;
var expenses = await db
    .rawQuery('SELECT * FROM EXPENSES WHERE DATE(DATETIME) >= ? AND DATE(DATETIME) <= ?',
['$FromDate','$ToDate']);

List<expense> expensesList = List<expense>();
expenses.forEach((currentExpense) {
  expense expenses = expense.fromMap(currentExpense);
  expensesList.add(expenses);
});
return expensesList;
}

上面的函数需要 2 个参数。

我通过以下方式调用上述函数:

 class dateWiseList extends StatefulWidget {
  final DateTime fromDate;
  final DateTime toDate;

  dateWiseList({this.fromDate, this.toDate});
 @override
 _dateWiseListState createState() => _dateWiseListState();
 }


class _dateWiseListState extends State<dateWiseList> {
@override
void initState() {
super.initState();
DatabaseProvider.db.getExpenseDateWise(// <----------1----------> //).then(
      (expenseList) {
    BlocProvider.of<ExpenseBloc>(context).add(SetDates(expenseList));
  },
 );
}

<----------1---------> 我需要传递两个参数。我不知道该怎么做,请帮助我。

函数 getExpenseDateWise 用于获取用户以不同形式选择的两个日期之间的数据记录。这就是我使用 dateWiseList({this.fromDate, this.toDate}); 调用这些值的原因。 感谢您的回复

2 个答案:

答案 0 :(得分:1)

您只需要传递开始日期和结束日期即可过滤数据

DateTime now = DateTime.now();
DtaeTime yesterday = DateTime.now().subtract(Duration(days:1));
DatabaseProvider.db.getExpenseDateWise(yesterday, now).then(.........)

你可以像对待任何其他函数一样对待颤振函数

答案 1 :(得分:1)

试试 widget.fromDate 和 widget.toDate。因为我看到你在使用一个有状态的小部件。

如果您的函数采用位置参数,例如 未来做某事(字符串名称,布尔混蛋){ 大量代码 }

然后在有状态小部件中调用它时,同时使用您传递给该小部件的一些参数,执行 tgis 等等等等= doSomething(widget.argument1,widget.argument2)

如果不是位置参数,例如 未来做某事({字符串名称,布尔混蛋}){ 大量代码 }

,然后就可以了 等等等等=做某事( 名称:widget.argument1,混蛋:widget.argument2)