问题描述
我有一个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 (将#修改为@)