检索存储在 SQFlite 数据库 (Flutter) 中的数据?

爱德华多·塔维拉

我有一个模型类Pet使用toMapfromMap

  Map<String, dynamic> toMap() {
return {
  'id': id,
  'image': image,
  'name': name,
  'birth': birth,
  'colour': colour,
  'breed': breed,
  'hairlength': hairLength,
  'sterilized': sterilized,
  'vaccinated': vaccinated
   };
  }

    Pet.fromMap(Map<String, dynamic> map) {
    id = map['id'];
    image = map['image'];
    name = map['name'];
    birth = map['birth'];
    breed = map['breed'];
    colour = map['colour'];
    hairLength = map['hairlength'];
    sterilized = map['sterilized'];
    vaccinated = map['vaccinated'];
  }

我将所有内容都存储在我的数据库中,并且我想检索图像(存储为字符串),所以我使用了这个方法:

  Future<List<String>> getImages() async {
    var dbClient = await db;
    List<Map> maps = await dbClient.rawQuery("SELECT * FROM $TABLE");
    List<String> images = [];
    if (maps.length > 0) {
       for (int i = 0; i < maps.length; i++) {
           images.add(Pet.fromMap(maps[i]).image);
      }
     }
    return images;
  }

如何使用Future<List<String>>读取与每个图像关联的每个字符串?

马里乌斯·施马克

问题有点含糊,假设就像提到的评论一样,您想直接在小部件中使用该函数,您可以使用 FutureBuilder 或在完成后在 initstate 和 setState 中调用该函数。

未来建造者版本

class TextFutureWidget extends StatelessWidget {
  Future<List<String>> testFunction() async {
    return List<String>();
  }

  @override
  Widget build(BuildContext context) {
    final imagesFuture = testFunction();
    return Container(
        child: FutureBuilder(
      future: imagesFuture,
      builder: (context, snapshot) {
        if (!snapshot.hasData || snapshot.data == null) return Container();
        return Column(
          children: <Widget>[
            for (var item in snapshot.data) Text(item),
          ],
        );
      },
    ));
  }
}

初始状态版本

class TestWidget extends StatefulWidget {
  @override
  _TestWidgetState createState() => _TestWidgetState();
}

class _TestWidgetState extends State<TestWidget> {
  List<String> _images;
  List<String> get images => _images;
  set images(List<String> images) {
    if (mounted) setState(() => _images = images);
  }

  @override
  void initState() {
    super.initState();
    testFunction().then((value) => images = value);
  }

  Future<List<String>> testFunction() async {
    return List<String>();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        if(images != null)
          for (var item in images)
            Text(item),
      ],
    );
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Flutter SQFLite资产数据库

Flutter中获取SQFLITE数据库的数据

Flutter 将数据插入数据库 sqflite

Flutter / Dart:检索sqflite数据并放入数组/列表中

Flutter sqflite打开现有数据库

Flutter Sqflite打开数据库需要加入方法

在flutter中使用sqflite数据库的问题

Sqflite数据库中Flutter地图上的Flutter标记位置(纬度,经度)

如何使用Flutter SQFlite获取数据库表中的行数

如何在Flutter中将图像数据保存到sqflite数据库以保持持久性

在升级时测试 Flutter 本地 sqflite 数据库,应用更新后未显示数据

如何在flutter中将api json数据存储到sqflite中

如何在Flutter中使用SQFlite进行数据库插入

如何在Flutter中使用SQFlite进行数据库更新

如何在Flutter中使用SQFlite进行数据库查询

无法从sqflite数据库中获取所有用户并在flutter中显示在列表中

有没有办法使用sqflite在flutter应用程序中检查数据库版本?

将 SQFlite 中的数据显示到网格列表 (Flutter) 中?

SQLite不存储/检索数据库

滑动从数据库中删除项目-Sqflite

sqflite flutter 中的 AND 语句

如何等到在 Flutter 中检索到 Firebase 数据库数据?

从数据库中检索存储的单选按钮值

检索存储在数据库中的日期的时区

在数据库中存储和检索私钥

在Xamarin的SQLite数据库中存储和检索数组

如何在flutter应用程序中的特定日期和时间更新sqflite数据库中的表记录?(Android)

如何在 Flutter 中的存储库中访问/注入 ObjectBox 数据库 - Reso Coder DDD

从数据库中检索数据?