Moor_flutter limit()方法不起作用/它被忽略

问题描述 投票:0回答:1

我正在使用moor_flutter软件包来使用sqlite数据库。我一直在尝试将limit方法应用于某个查询,但无法正常工作。在limit方法内部,我正在解析int _limit参数值以及可选的offset: int _offset参数值。

我没有收到任何错误,我不确定为什么这没有用。请参见下面的代码。

Stream<List<PersonWithProducts>> watchAllPersons(int _limit, int _offset) {
    return (select(persons)
          ..orderBy(
            [
              (t) =>
                  OrderingTerm(expression: t.created, mode: OrderingMode.desc),
              (t) => OrderingTerm(expression: t.name),
            ],
          )..limit(_limit, offset: _offset))
        .join(
          [
            leftOuterJoin(products, products.guest_person_id.equalsExp(persons.id)),
          ],
        )
        .watch()
        .map((rows) => rows.map(
              (row) {
                return PersonWithProuducts(
                  person: row.readTable(persons),
                  product: row.readTable(products),
                );
              },
            ).toList());
  }

表中有20个以上的记录。当我调用上面的函数时,将提取数据库表中的所有数据而不是指定的限制,就像limit()方法被忽略。

请参见下面的代码,这是我调用上述函数的地方

int limit = 5;
int offset = 0;

return StreamBuilder(
      stream: personDao.watchAllPersons(limit, offset),
      builder: (context, AsyncSnapshot<List<PersonWithProducts>> snapshot) {
        final persons = snapshot.data ?? List();
        // print('snapshot data: ${snapshot.data}');
        if (snapshot.hasData) {
          return ListView.builder(
            itemCount: persons.length,
            itemBuilder: (_, index) {
              final personInfo = persons[index];
              return _buildListItem(
                  personInfo, personDao);
            },
          );
        } else {
          return Center(
            child: AwesomeLoader(
              loaderType: AwesomeLoader.AwesomeLoader4,
              color: Colors.blue,
            ),
          );
        }
      },
    );

我想要的是watchAllPersons函数,用于根据指定的limit提取数据。我想使limit方法起作用。谢谢你,非常感谢。

sqlite flutter dart limit flutter-moor
1个回答
0
投票

为什么要在'limit'变量下划线,这意味着您正在将该变量设为私有。

© www.soinside.com 2019 - 2024. All rights reserved.