flutter - 如何改变未来在 dart:flutter 中串起来
问题描述
我正在使用一些 sqflite 对数据库进行查询,并提取表的特定名称,例如:我有 3 个名称,罗伯托、里卡多和安德烈斯,我只想获取罗伯托的名称,所以这个我在做什么:
loginLogic() async {
var X = 'Roberto';
final db = await database;
List<Map> result = await db.rawQuery('SELECT * FROM Usuario WHERE username=?', [X]);
所以现在,我想将此结果与另一个结果进行比较以执行“if”函数,就像这样:
if(result==X){
return 1;
} else {
return 0;
}
但这就是颤振所说的:
List<Map<dynamic, dynamic>> result
Equality operator '==' invocation with references of unrelated
和调试控制台:
type 'Future<dynamic>' is not a subtype of type 'int'
所以我需要一种方法来比较来自用户列表的值与带有我声明为“X”的变量的字符串。
尝试使用这个问题的参考
这是我尝试过的:
loginLogicpar() async {
var X = 'Giova';
final db = await database;
final result = await db.rawQuery('SELECT * FROM Usuario WHERE username=?', [X]);
return result;
}
loginLogic() async {
var X = 'Giova';
final user = await loginLogicpar();
if(user==X){
return 1;
}
return 0;
}
并返回完全相同的结果:类型 'Future' 不是类型 'int' 的子类型
添加了代码以便您可以复制它,只要确保您的依赖项上有 sqflite。
解决方案
这是一条地狱般的道路,但我是在你们所有人的帮助下完成的,但最后一块是@mutantkeyboard,我得到的是 Sqflite 表中不同元素的列表,但在将其转换为变量和 .first 函数我可以将其转换为另一个变量!这是我做的:
loginLogic() async {
final db = await database;
var table = await db.rawQuery("SELECT MAX(id)+1 as id FROM Usuario");
int id = table.last["id"];
for(var i=1; i<id; i++){
var result = await db.rawQuery('SELECT username FROM Usuario WHERE id=?', [i]);
String Y = result.first["username"];
if(Y=='Roberto'){
return 1;
}
}
return 0;
}
如果您想将其与外部的另一个变量进行比较,例如本地登录的身份验证(这就是我所做的,只是为了教育目的,我绝不建议您将用户名和密码放入本地软件中)并将 textfield.text 与表格进行比较,然后您可以将代码修改为以下内容:
loginLogic(String field) async {
final db = await database;
var table = await db.rawQuery("SELECT MAX(id)+1 as id FROM Usuario");
int id = table.last["id"];
for(var i=1; i<id; i++){
var result = await db.rawQuery('SELECT username FROM Usuario WHERE id=?', [i]);
String Y = result.first["username"];
if(Y==field){
return 1;
}
}
return 0;
}
推荐阅读
- animation - Lottie 动画没有播放到最后。怎么修?
- python - 在 for 循环中分配新列时将标题名称分配给熊猫数据框的优雅方法?
- android - 在对话框中显示消息的替代方式是什么?
- c# - 根据属性值从 JObject 返回子对象
- java - 使用 Postman 调用 WS 已完成,但不是从 Java 代码
- java - 从本地我可以使用 psql 命令通过终端访问,但无法通过 JAVA 代码连接
- node.js - 使用纬度和经度按地理位置查找到附近
- java - 并发数据结构中非并发数据结构的线程安全
- json - Jstree中错误时间的数据绑定
- objective-c - UIButton 移除样式选中状态