gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 07:16:37 28 4
gpt4 key购买 nike

我有一个模型类 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 中的函数。

FutureBuilder 版本

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),
],
);
}
}

关于string - 检索存储在 SQFlite 数据库(Flutter)中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57196707/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com