构建器:来自未来构建器不起作用



在这种情况下,当我尝试使用FutureBuilder时,只生成future:但不会转到构建器:因为我找不到任何原因。我无法检查它是否有数据。我把代码给你。

ConstrainedBox(
constraints: BoxConstraints(
maxWidth: ajuste.width*0.74,
minWidth: ajuste.width*0.74
),
child: CupertinoButton(
borderRadius: BorderRadius.circular(5),
padding: EdgeInsets.symmetric(vertical: ajuste.sp(1.8)),
color: Colors.pinkAccent,
onPressed: (){
compruebaDatos();
},
child: Text(
AppLocalizations.of(context).translate('entrar'),
style: TextStyle(
fontSize: ajuste.sp(2.4)
),
), 
),
),
compruebaDatos() {
FutureBuilder<List<Usuario>>(
future: DatabaseProvider.db.getAllUsers(),
builder: (BuildContext context, AsyncSnapshot<List<Usuario>> snapshot){
if (snapshot.hasData) {
if (snapshot.data !=null) {
print('Datos nulos');
return HomePage();
}else{
print('Datos recogidos');
return HomePage();
}
}else{
print('No aparece nada');
return HomePage();
}
},
);
}

和未来类内连接sqflite

Future<List<Usuario>> getAllUsers() async {
final db = await database;
var response = await db.query("Usuarios");
List<Usuario> list = response.isNotEmpty
? response.map((c) => Usuario.fromMap(c)).toList()
: []; 
return list;

}

谢谢

FutureBuilderWidget。你不应该在compruebaDatos()中使用它。

onPressed中,您应该直接调用DatabaseProvider.db.getAllUsers()并处理它的响应,然后调用Navigator.of(context).push(...)转到另一个页面。

已解决。我在一个孩子体内更改FutureBuilder,并检查快照的长度是否大于0

Column(
children: <Widget>[
FutureBuilder<List<Usuario>>(
future: DatabaseProvider.db.getAllUsers(),
builder: (BuildContext context, AsyncSnapshot<List<Usuario>> snapshot){
if (snapshot.hasData) {
if (snapshot.data.length == 0) {
tieneDatos=false;
}else{
tieneDatos=true;
Usuario item = snapshot.data[0];
print(item.usuario);
}
}
return Container();
},
),

相关内容

  • 没有找到相关文章

最新更新