Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 无法从sqflite数据库中获取所有用户并在列表中显示_List_Flutter_Datatable_Datarow_Datacolumn - Fatal编程技术网

List 无法从sqflite数据库中获取所有用户并在列表中显示

List 无法从sqflite数据库中获取所有用户并在列表中显示,list,flutter,datatable,datarow,datacolumn,List,Flutter,Datatable,Datarow,Datacolumn,我尝试将数据库中的所有用户作为一个列表,并使用一些DataColumn和DataCell将它们显示到DataTable中。但我从数据库里什么也没得到。列表是空的 (我将数据输入数据库,因为我可以使用用户数据登录,并且在我的代码中有show Text()部分,用于在没有数据的情况下向用户显示未找到数据的文本 这是从数据库获取数据的代码: Future<List<User>> getUsers() async { var dbClient = await db;

我尝试将数据库中的所有用户作为一个列表,并使用一些DataColumn和DataCell将它们显示到DataTable中。但我从数据库里什么也没得到。列表是空的

(我将数据输入数据库,因为我可以使用用户数据登录,并且在我的代码中有show Text()部分,用于在没有数据的情况下向用户显示未找到数据的文本

这是从数据库获取数据的代码:

 Future<List<User>> getUsers() async {
    var dbClient = await db;
    // List<Map> maps = await dbClient
    //     .query(USER_TABLE, columns: [ID, NAME, FAMILY, NATIONAL_ID]);
    List<Map> maps =
        await dbClient.query(USER_TABLE, columns: [ID, USERNAME, PASSWORD]);
    //List<Map> maps = await dbClient.rawQuery("SELECT * FROM $USER_TABLE");

    List<User> users = [];
    if (maps.length > 0) {
      for (int i = 0; i < maps.length; i++) {
        users.add(User.fromMap(maps[i]));
      }
    }
    return users;
  }
Future getUsers()异步{
var dbClient=await db;
//列表映射=等待dbClient
//.query(USER_表,列:[ID,NAME,FAMILY,NATIONAL_ID]);
列表地图=
wait dbClient.query(USER_表,列:[ID,用户名,密码]);
//List maps=await dbClient.rawQuery(“从$USER_表中选择*);
列出用户=[];
如果(maps.length>0){
对于(int i=0;i
这是我的ShowUsersList类:

    import 'package:atlas_gen_demo/data/storage/db_helper.dart';
import 'package:flutter/material.dart';
import 'package:atlas_gen_demo/Animation/FadeAnimation.dart';
import '../models/user.dart';
import 'package:flushbar/flushbar.dart';

class UsersListScreen extends StatefulWidget {
  static const routeName = '/users-list-screen';

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

class _UsersListScreenState extends State<UsersListScreen> {
  Future<List<User>> usersList;
  var dbHelper;

  @override
  void initState() {
    super.initState();
    dbHelper = DBHelper();

    refreshList();
  }

  refreshList() {
    setState(() {
      usersList = dbHelper.getUsers();
    });
  }

  SingleChildScrollView dataTable(List<User> users) {
    return SingleChildScrollView(
      scrollDirection: Axis.vertical,
      child: DataTable(
        columns: [
          DataColumn(
            label: Text('id'),
          ),
          DataColumn(
            label: Text('name'),
          ),
          DataColumn(
            label: Text('family'),
          ),
          // DataColumn(
          //   label: Text('National Id'),
          // ),
        ],
        rows: users
            .map(
              (user) => DataRow(cells: [
                DataCell(Text(user.id.toString())),
                DataCell(Text(user.username)),
                DataCell(Text(user.password)),
                //DataCell(Text(user.nationalId)),
              ]),
            )
            .toList(),
      ),
    );
  }

  userList(BuildContext ctx) {
    return Expanded(
      child: FutureBuilder(
        future: usersList,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            showFlushBar(ctx, "test", snapshot.data);
            return dataTable(snapshot.data);
          }

          if (null == snapshot.data || snapshot.data.length == 0) {
            return Text(
              '"No Data Found',
            );
          }

          return CircularProgressIndicator();
        },
      ),
    );
  }

  void showFlushBar(BuildContext context, String title, String text) {
    Flushbar(
      padding: EdgeInsets.all(10),
      borderRadius: 8,
      backgroundGradient: LinearGradient(
        colors: [Colors.purple.shade800, Colors.purpleAccent.shade700],
        stops: [0.6, 1],
      ),
      boxShadows: [
        BoxShadow(
          color: Colors.black,
          offset: Offset(3, 3),
          blurRadius: 3,
        )
      ],
      dismissDirection: FlushbarDismissDirection.HORIZONTAL,
      forwardAnimationCurve: Curves.fastLinearToSlowEaseIn,
      titleText: Text(
        title,
        style: TextStyle(fontFamily: 'mainBold', color: Colors.white),
      ),
      messageText: Text(
        text,
        style: TextStyle(fontFamily: 'mainMedium', color: Colors.white),
      ),
      duration: Duration(seconds: 3),
    ).show(context);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: Container(
        child: Column(
          children: <Widget>[
            Container(
              height: 250,
              margin: EdgeInsets.only(top: 50),
              decoration: BoxDecoration(
                image: DecorationImage(
                  image: AssetImage('assets/images/users_list.png'),
                  fit: BoxFit.fill,
                ),
              ),
            ),
            Positioned(
              child: FadeAnimation(
                  1.8,
                  InkWell(
                    child: Container(
                      margin: EdgeInsets.only(top: 10),
                      child: Center(
                        child: Text(
                          "Users List",
                          textAlign: TextAlign.center,
                          style: TextStyle(
                            color: Color.fromRGBO(143, 148, 251, 1),
                            fontSize: 20,
                            fontWeight: FontWeight.bold,
                            fontFamily: 'persianBold',
                          ),
                        ),
                      ),
                    ),
                  )),
            ),
            userList(context)
          ],
        ),
      ),
    );
  }
}
import'包:atlas_gen_demo/data/storage/db_helper.dart';
进口“包装:颤振/材料.省道”;
导入“包:atlas_gen_demo/Animation/FadeAnimation.dart”;
导入“../models/user.dart”;
导入“包:flushbar/flushbar.dart”;
类UsersListScreen扩展StatefulWidget{
静态常量routeName='/users list screen';
@凌驾
_UsersListScreenState createState()=>\u UsersListScreenState();
}
类_UsersListScreenState扩展状态{
未来用户列表;
var-dbHelper;
@凌驾
void initState(){
super.initState();
dbHelper=dbHelper();
刷新列表();
}
刷新列表(){
设置状态(){
usersList=dbHelper.getUsers();
});
}
SingleChildScrollView数据表(列出用户){
返回SingleChildScrollView(
滚动方向:轴垂直,
子:数据表(
栏目:[
数据列(
标签:文本('id'),
),
数据列(
标签:文本(“名称”),
),
数据列(
标签:文本(“族”),
),
//数据列(
//标签:文本(“国家Id”),
// ),
],
行:用户
.地图(
(用户)=>数据行(单元格:[
数据单元(文本(user.id.toString()),
数据单元(文本(user.username)),
数据单元(文本(用户密码)),
//数据单元(文本(user.national)),
]),
)
.toList(),
),
);
}
用户列表(BuildContext ctx){
扩大回报(
孩子:未来建设者(
未来:用户列表,
生成器:(上下文,快照){
if(snapshot.hasData){
showFlushBar(ctx,“测试”,快照数据);
返回数据表(snapshot.data);
}
if(null==snapshot.data | | snapshot.data.length==0){
返回文本(
““未找到任何数据”,
);
}
返回循环ProgressIndicator();
},
),
);
}
void showFlushBar(构建上下文上下文、字符串标题、字符串文本){
冲水杆(
填充:边缘设置。全部(10),
边界半径:8,
背景梯度:线性梯度(
颜色:[colors.purple.shade800,colors.purpleacent.shade700],
停止:[0.6,1],
),
箱形阴影:[
箱形阴影(
颜色:颜色,黑色,
偏移量:偏移量(3,3),
半径:3,
)
],
dismissDirection:FlushbarDismissDirection.HORIZONTAL,
forwardAnimationCurve:Curves.FastLinearToSloweasin,
标题文本:文本(
标题
样式:TextStyle(fontFamily:'mainBold',颜色:Colors.white),
),
messageText:Text(
文本,
样式:TextStyle(fontFamily:'mainMedium',颜色:Colors.white),
),
持续时间:持续时间(秒数:3),
).show(上下文);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:Colors.white,
主体:容器(
子:列(
儿童:[
容器(
身高:250,
页边距:仅限边缘集(顶部:50),
装饰:盒子装饰(
图像:装饰图像(
image:AssetImage('assets/images/users\u list.png'),
fit:BoxFit.fill,
),
),
),
定位(
孩子:FadeAnimation(
1.8,
墨水池(
子:容器(
页边空白:仅限边集(前10页),
儿童:中心(
子:文本(
“用户列表”,
textAlign:textAlign.center,
样式:TextStyle(
颜色:颜色。来自RGBO(143148251,1),
尺寸:20,
fontWeight:fontWeight.bold,
fontFamily:“波斯博尔德”,
),
),
),
),
)),
),
用户列表(上下文)
],
),
),
);
}
}

请指导我如何解决此问题。谢谢

能否尝试删除getAllUsers()中的wait


当我检查时,我可以在db_helper中读取
Future getUsers()async
中的数据。但是我在userList()中看不到数据,并且快照为空。但是我不理解为什么会发生这种情况。我遗漏了什么吗?是的,我这样做了。并且更新代码:
refreshList(){setState(((){usersList dbHelper.getUsers();});}
更新代码后,我在手机中收到一条错误消息:
类型“List”不是类型“String”的子类型。
其原因是showFlushbar函数接受了字符串参数而不是用户。show
getAllUsers() async {
    users = dbHelper.getUsers();
  }