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

时间:2020-08-30 15:38:41

标签: flutter listview sqflite

我有一个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

0 个答案:

没有答案