生成器:从FutureBuilder不起作用

时间:2020-03-16 09:15:53

标签: flutter builder sqflite

在这种情况下,当我尝试使用FutureBuilder时,只有未来:但由于我找不到的任何原因,它不会传递给生成器:我无法检查它是否具有数据。我在这里给你代码。

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;

}

谢谢

3 个答案:

答案 0 :(得分:0)

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

onPressed内,您应直接致电DatabaseProvider.db.getAllUsers()并处理其响应,然后致电Navigator.of(context).push(...)转到另一页。

答案 1 :(得分:0)

我将其更改为onpressed,但仍然是相同的问题。没有futurebuild,我怎么知道我有数据?

onPressed: (){
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();
    }
  },
);

},

答案 2 :(得分:0)

已解决。我在子级中更改FutureBuilder,并检查快照的长度是否大于0

implementation 'com.tinder.scarlet:scarlet:0.1.10'
implementation 'com.github.tinder.scarlet:scarlet-message-adapter-moshi:0.1.10'
implementation 'com.github.tinder.scarlet:scarlet-stream-adapter-rxjava2:0.1.10'
implementation 'com.github.tinder.scarlet:scarlet-websocket-okhttp:0.1.10'