gpt4 book ai didi

android - 警告数据库已被锁定为 0 :00:10. 000000。确保在事务期间始终使用事务对象进行数据库操作

转载 作者:行者123 更新时间:2023-12-04 11:55:12 28 4
gpt4 key购买 nike

我正在尝试从远程服务器获取图像。我不断收到此错误:

  Warning database has been locked for 0:00:10.000000. 
Make sure you always use the transaction object for database operations during a transaction
之后我的应用程序崩溃了。

Widget carousel = new Container(
height: 200,
child: FutureBuilder<List<String>>(
future: getPropImgs(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return new Carousel(

boxFit: BoxFit.cover,
images: snapshot.data.map((f) {
return new CachedNetworkImage(
imageUrl: f.toString(),
imageBuilder: (context, imageProvider) => Container(
decoration: BoxDecoration(
image: DecorationImage(
image: imageProvider,
fit: BoxFit.cover,
colorFilter:
ColorFilter.mode(Colors.blue, BlendMode.dstIn)),
),
),
placeholder: (context, url) => Center(
child: Container(
height: 30,
width: 30,
child: CircularProgressIndicator())),
errorWidget: (context, url, error) =>
Image.asset("assets/images/icon.png"),
);
}).toList(),
autoplay: true,
animationCurve: Curves.fastOutSlowIn,
animationDuration: Duration(milliseconds: 1000),
indicatorBgPadding: 1.0,
dotColor: Colors.black,

);


最佳答案

我猜你正在尝试执行大量的 SQL 查询。
一旦缓慢的解决方案是确保您等待每个电话。在这里的第二行中,您缺少等待:

 await db.transaction((txn) async {
但是在这里它仍然会为每个插入创建一个事务,因此会非常慢。一种解决方案是使用批处理( https://github.com/tekartik/sqflite/tree/master/sqflite#batch-support )并将插入语句排队(例如 1000 x 1000);
var batch = db.batch();
batch.rawInsert(statement1);
batch.rawInsert(statement2);
batch.rawInsert(statement3);
...
await db.commit(noResult: true);

关于android - 警告数据库已被锁定为 0 :00:10. 000000。确保在事务期间始终使用事务对象进行数据库操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64539536/

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