Sqlite 未来的建设者得到一个空列表

Sqlite 未来的建设者得到一个空列表,sqlite,flutter,flutter-futurebuilder,Sqlite,Flutter,Flutter Futurebuilder,我对show ListView.Builder有问题 我创建了一个连接API的应用程序,用于检索我使用该提供商的人员列表 示例代码: api_provider.dart 创建连接 class ApiProvider { String _url = 'example.com'; Future<List<Directorio>> getPeople() async { final url = Uri.https(_url, 'app/v1/peoples

我对show ListView.Builder有问题 我创建了一个连接API的应用程序,用于检索我使用该提供商的人员列表 示例代码: api_provider.dart 创建连接

class ApiProvider {

  String _url = 'example.com';

  Future<List<Directorio>> getPeople() async {

    final url = Uri.https(_url, 'app/v1/peoples.json');

    final resp = await http.get(url);
    final dataRaw = utf8.decode(resp.bodyBytes);
    final decodedData = json.decode(dataRaw);

     // this save the data retrieve in sqlite

    return (decodedData as List).map((e) {
      //print('Insert $e');
      DBProvider.db.createDirectory(Directorio.fromJsonMap(e));
    }).toList();

  }

}
类API提供程序{
字符串_url='example.com';
Future getPeople()异步{
final url=Uri.https(_url,'app/v1/peoples.json');
final resp=wait http.get(url);
最终数据原始=utf8.解码(分别为bodyBytes);
final decodedData=json.decode(dataRaw);
//这将在sqlite中保存检索的数据
返回(解码数据为列表).map((e){
//打印(“插入$e”);
DBProvider.db.createDirectory(Directorio.fromJsonMap(e));
}).toList();
}
}
以上代码工作正常

在另一个文件名中,db_provider.dart是用于创建数据库的,也是用于保存数据的 当我把这个叫做文件但是

我需要在我使用FutureBuilder的listview中显示数据(future:DBProvider.db.getAllPeople()) 这就是问题所在。当我需要热重启应用程序或关闭应用程序并再次打开时,请不要显示列表

这是我的主页

class HomePage extends StatefulWidget {
  final List<Directory> directory;

  HomePage({Key key, @required this.directory}) : super(key: key);

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  
  final title = "my title";

  @override
  Widget build(BuildContext context) {
   
    return Scaffold(
      appBar: AppBar(
        centerTitle: false,
        title: Text(title),
        backgroundColor: Colors.indigoAccent,
        actions: [
          IconButton(
            icon: Icon(Icons.search),
            onPressed: (){
              print("nothing");
            }
        )
        ],
      ),
        body: _createList()
      );

  }

  Widget _createList() {
    return FutureBuilder<List<Directory>>(
      future: DBProvider.db.getAllPeople(),
      builder: (BuildContext context, AsyncSnapshot<List> snapshot){
        if ( snapshot.hasData == null ) {
          return Center(child: CircularProgressIndicator());
        }
        
        return snapshot.hasData
              ? DirectorioList(directorios: snapshot.data)
              : Center(child: CircularProgressIndicator());

      }
    );

  }
}
类主页扩展StatefulWidget{
最终清单目录;
主页({Key Key,@required this.directory}):超级(Key:Key);
@凌驾
_HomePageState createState()=>\u HomePageState();
}
类_HomePageState扩展状态{
最终标题=“我的标题”;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:错误,
标题:文本(标题),
背景颜色:Colors.indigoAccent,
行动:[
图标按钮(
图标:图标(Icons.search),
已按下:(){
打印(“无”);
}
)
],
),
正文:_createList()
);
}
小部件_createList(){
回归未来建设者(
future:DBProvider.db.getAllPeople(),
生成器:(BuildContext上下文,异步快照){
if(snapshot.hasData==null){
返回中心(子项:CircularProgressIndicator());
}
返回snapshot.hasData
?目录列表(目录:snapshot.data)
:居中(子项:循环压缩机指示器());
}
);
}
}
DirectoryList是调用listView.builder的小部件

我的问题是,我在第一次安装应用程序或运行模拟器时没有看到这些信息。 我必须重新启动应用程序或关闭它,然后重新打开它 如何让它首先调用api_提供程序,然后填充数据库,然后调用FutereBuilder,这样它就不会第一次得到一个空列表

有人帮我,我已经把API信息带好了,我把它很好地保存在数据库中。我的问题是,它在第一次填充listview时就被看到了