【发布时间】:2020-12-23 04:36:04
【问题描述】:
您好,我正在尝试构建一个资金管理应用程序。 我在添加列表中的所有数字时遇到问题。
我的想法是我有 2 个按钮(绿色和红色)。用户会添加一个数字,然后点击绿色或红色来显示他们收到的钱或花费的钱。
我无法获取列表的总数或对列表执行数学运算。
我可以使用任何替代方法吗?
import 'package:flutter/material.dart';
import 'package:list_ext/list_ext.dart';
class HomeScreen extends StatefulWidget {
static final String routeName = "/home";
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final myController = TextEditingController();
List<String> in_out = ["One","Two","Three","Four"];
List<int> amount = [1, 2, 3 ,4];
// int sum = amount.reduce((a, b) => a + b);
var money = 0;
var newMoney = 0;
var cash = 0;
var income = 0;
var spent = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomPadding: false,
appBar: buildAppBar(),
body: buildBody(),
);
}
Widget buildAppBar(){
return AppBar(
title: Text('Money Managment App'),
);
}
Widget buildTotal(){
return Text('$newMoney');// res is 15
}
Widget buildBody(){
return Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
GestureDetector(
child: Icon(Icons.chevron_left,
color: Colors.red,
size: 40,),
onTap: (){
addExpense();
},
),
Container(
width: 150,
child: TextField(
controller: myController,
keyboardType: TextInputType.number,
autocorrect: true,
),
),
GestureDetector(
child: Icon(Icons.chevron_right,
color: Colors.green,
size: 40,),
onTap: () {
addIncome();
},
),
],
),
buildTotal(),
SizedBox(height: 20,),
Container(
height: 350,
child: ListView.builder
(
itemCount: in_out.length,
itemBuilder: (BuildContext ctxt, int index) {
return Container(
height: 30,
margin: EdgeInsets.all(2),
color: Colors.white,
child: Center(
child: Text('${in_out[index]} (${amount[index]})',
style: TextStyle(fontSize: 18),
)
),
);
}
)
),
],
),
);
}
void total(){
income = cash + int.parse(myController.text);
newMoney = money + income;
}
void addIncome(){
setState(() {
in_out.add('Income',);
amount.add(int.parse(myController.text));
total();
});
}
void addExpense(){
setState(() {
in_out.add('Expense');
amount.add(int.parse(myController.text));
});
}
}
我是 Flutter 的新手。
非常感谢任何关于学习的提示或视频推荐。 提前谢谢你。
【问题讨论】: