如何在ListView Builder中添加加号按钮从Flutter中的SQLite获取数据

问题描述

我有一个ListView Builder,而我有一个Stateful Widget。我想在Button添加一个加号Widget作为ListView Item。我正在做的是,我在创建数据库时在sqlite中添加了许多记录,并在数据库添加一个加号图标和一个空的记录/行。因此,我正在从那里获取数据。加号按钮(窗口小部件)按预期显示,但是将数据更新到数据库中时,Button不在预期位置显示,因为我希望它显示在所有项目的末尾。

       class CategoriesScreen extends StatefulWidget {
       @override
       _CategoriesScreenState createState() => _CategoriesScreenState();
        }

       class _CategoriesScreenState extends State<CategoriesScreen> {
        List<Map<String,dynamic>> spendingCategoriesList=[] ;
         DatabaseHelper helper=DatabaseHelper();
         @override
          Widget build(BuildContext context) {
          getData();

return Scaffold(
  backgroundColor: Color(0xFF343641),body: Container(

    width: MediaQuery.of(context).size.width,height: MediaQuery.of(context).size.height-100,margin: EdgeInsets.only(top: 40.0),child: Column(
      children: <Widget>[
        Container(
          width:MediaQuery.of(context).size.width,height: 30.0,margin: EdgeInsets.only(left: 20.0),child: Row(

            children: [
              GestureDetector(
                onTap:(){Navigator.pop(context);},child: Icon(
                  Icons.close,color: Color(0xFFE44663),size: 24.0,),Padding(
                padding: EdgeInsets.only(left:MediaQuery.of(context).size.width*0.3),child: Text('Categories',style: TextStyle(color: Colors.white,fontWeight: FontWeight.normal,fontSize: 15.0,],Expanded(
          child: GridView.builder(
              itemCount: spendingCategoriesList.length,gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),itemBuilder: (context,index){
            AddTransactionsModel transactionModel= new AddTransactionsModel(spendingCategoriesList[index]['CategoryImage'],spendingCategoriesList[index]['categoryName']);
            return AddTransactionItem(transactionModel);
          }),);
     }

      void getData() async{
spendingCategoriesList=await helper.getNoteMapList();
setState(()  {
  spendingCategoriesList=spendingCategoriesList;

});

     
 }
 

这是AddTransactionGridItem;

class _AddTransactionItemState extends State<AddTransactionItem> {
var imageSelectIndex;
String categoryName;
 String categoryImage;

@override
Widget build(BuildContext context) {


print(
    'Hello dear ! icon Number ${widget.transactionModel.iconNumber}  and here is Text ${widget.transactionModel.categoryNumber} ');

return Container(
  child: Column(
    children: <Widget>[
      InkWell(
        onTap: widget.transactionModel.categoryNumber == ''
            ? () {
                showAddCategoryDialogue();
              }
            : () {
          setState(() {
            categoryName=widget.transactionModel.categoryNumber;
            categoryImage=widget.transactionModel.iconNumber;

            print('categoryName  $categoryName     And categoryImage   $categoryImage');
            String cate='$categoryName&$categoryImage';

            Navigator.pop(context,cate);
          });

        },child: Container(
          width: 72.0,height: 72.0,decoration: Boxdecoration(
            color: Color(0xffC4C4C4).withOpacity(0.2),borderRadius: BorderRadius.all(Radius.circular(12.0)),border: widget.transactionModel.categoryNumber == ''
                ? Border.all(width: 0.3,color: Colors.white)
                : Border.all(width: 0.0),child: Center(
              child: Image.asset('${widget.transactionModel.iconNumber}')),SizedBox(
        height: 10.0,Text(
        widget.transactionModel.categoryNumber,style: TextStyle(
            color: Colors.white,fontSize: 16.0,fontWeight: FontWeight.w600,fontFamily: 'Rajdhani',fontStyle: FontStyle.normal),)
    ],);

}

Container以上是ListView.Builder() Item

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)