Skip to content

Commit

Permalink
添加利率显示
Browse files Browse the repository at this point in the history
  • Loading branch information
巫圣泰 committed Dec 24, 2019
1 parent f91f841 commit 4be0a59
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 48 deletions.
60 changes: 36 additions & 24 deletions lib/member/LoanInfo.dart
Original file line number Diff line number Diff line change
@@ -1,41 +1,53 @@

import 'package:loan_calc/utils/Utils.dart';
class LoandInfo{
/**
* 每天的利息
*/
//每天的利息
double interestDay;

/**
* 每月的利息
* 一个月按照30天计算
*/
// * 每月的利息
// * 一个月按照30天计算
double interestMonth;

/**
* 每年的利息
*/

//每年的利息
double interestYear;

/**
* 总的利息
*/
//总的利息
double interestTotal;

/**
* 本金
*/

// 本金
double baseMoney;

/**
* 是否利滚利
*/
bool isRoll;

/**
* 年利率
*/
//是否利滚利
bool isRoll=false;


//年利率
double yearRate;

String toString() {

StringBuffer sb=new StringBuffer();
// sb.write("本金:"+Utils.formatNumber(baseMoney)+"元");
// sb.write("\n总的利息:"+ Utils.formatNumber(interestTotal)+"元");
sb.write("年利率:"+Utils.formatNumber(yearRate*100)+" %"+"元");
if(interestYear!=0){
sb.write("\n一年的利息:"+Utils.formatNumber(interestYear)+"元");
}
if(interestMonth!=0){
sb.write("\n一月的利息:"+Utils.formatNumber(interestMonth)+"元");
}
if(interestDay!=0){
sb.write("\n日息:"+Utils.formatNumber(interestDay)+"元");
}

if(!isRoll){
sb.write("\n[非利滚利的算法] \n标准:以月30为天,年365\n注意:年利率大于36%就属于高利贷了");
}
return sb.toString();
}

}

class TIME{
Expand Down
15 changes: 15 additions & 0 deletions lib/utils/Utils.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import 'package:intl/intl.dart';
class Utils{


//保留两位小数
static String formatNumber(double number){
String style="#.##";

NumberFormat numberFormat=new NumberFormat(style);

return numberFormat.format(number);

}

}
5 changes: 3 additions & 2 deletions lib/view/date_drop_down.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import 'package:flutter/material.dart';
import 'package:loan_calc/ctrl/SpnnerControl.dart';

class DateDropDown extends StatefulWidget {
@immutable
class DateDropDown extends StatefulWidget {


SpnnerControl control;
final SpnnerControl control;

DateDropDown( this.control);

Expand Down
73 changes: 52 additions & 21 deletions lib/view/loan_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,55 +37,59 @@ class MyLoadPage extends StatefulWidget {
*/

class _MyLoadPageState extends State<MyLoadPage> {
final TextEditingController _money_controller = new TextEditingController();
final TextEditingController _time_controller = new TextEditingController();
final TextEditingController _rate_controller = new TextEditingController();
final TextEditingController moneyController = new TextEditingController();
final TextEditingController timeController = new TextEditingController();
final TextEditingController rateController = new TextEditingController();

SpnnerControl _time_control=new SpnnerControl();
SpnnerControl _rate_ctrl=new SpnnerControl();



SpnnerControl spnnerTimeControl=new SpnnerControl();
SpnnerControl spnnerRateCtrl=new SpnnerControl();

bool isCanInputRateMomey = false;
double rateMoney = 0;
String displayDetail="";

void checkAndCalc(TapUpDetails details) {
if (_money_controller.text.isEmpty) {
if (moneyController.text.isEmpty) {
showTaost("金额不能为空");
return null;
}

if(_time_controller.text.isEmpty){
if(timeController.text.isEmpty){
showTaost("时间不能为空");
return null;
}

if(_rate_controller.text.isEmpty){
if(rateController.text.isEmpty){
showTaost("利息不能为空");
return null;
}

double money=double.parse(_money_controller.text);
double money=double.parse(moneyController.text);

int time=int.parse(_time_controller.text);
int time=int.parse(timeController.text);

double rate=double.parse(_rate_controller.text);
double rate=double.parse(rateController.text);


int rateType=RATE.YEAR;


int timeType=TIME.YEAR;

if("月"==_rate_ctrl.value){
if("月"==spnnerTimeControl.value){
timeType=TIME.MONTH;
}else if("日" == _rate_ctrl.value){
}else if("日" == spnnerTimeControl.value){
timeType=TIME.DAY;
}else{
timeType=TIME.YEAR;
}

if("月息"==_rate_ctrl.value){
if("月息"==spnnerRateCtrl.value){
rateType=RATE.MONTH;
}else if("日息" == _rate_ctrl.value){
}else if("日息" == spnnerRateCtrl.value){
rateType=RATE.DAY;
}else{
rateType=RATE.YEAR;
Expand All @@ -96,6 +100,7 @@ class _MyLoadPageState extends State<MyLoadPage> {

setState(() {
rateMoney=info.interestTotal;
displayDetail=info.toString();
});


Expand All @@ -104,6 +109,7 @@ class _MyLoadPageState extends State<MyLoadPage> {

}


@override
Widget build(BuildContext context) {
// TODO: implement build
Expand All @@ -126,7 +132,7 @@ class _MyLoadPageState extends State<MyLoadPage> {
child: TextField(
obscureText: false,
//是否是密码
controller: _money_controller,
controller: moneyController,
keyboardType: TextInputType.number,
//数字输入

Expand All @@ -147,7 +153,7 @@ class _MyLoadPageState extends State<MyLoadPage> {
child: TextField(
obscureText: false,
//是否是密码
controller: _time_controller,
controller: timeController,
keyboardType: TextInputType.number,
//数字输入

Expand All @@ -156,7 +162,7 @@ class _MyLoadPageState extends State<MyLoadPage> {
),
),
SizedBox(width: 10),
SizedBox(width: 80, child: DateDropDown(_time_control))
SizedBox(width: 80, child: DateDropDown(spnnerTimeControl))
],
)),
SizedBox(height: 16),
Expand All @@ -168,7 +174,7 @@ class _MyLoadPageState extends State<MyLoadPage> {
child: TextField(
obscureText: false,
//是否是密码
controller: _rate_controller,
controller: rateController,
keyboardType: TextInputType.number,
//数字输入

Expand All @@ -177,7 +183,7 @@ class _MyLoadPageState extends State<MyLoadPage> {
),
),
SizedBox(width: 10),
SizedBox(width: 80, child: RateDropDown(_rate_ctrl)),
SizedBox(width: 80, child: RateDropDown(spnnerRateCtrl)),
],
)),
SizedBox(height: 16),
Expand All @@ -186,11 +192,15 @@ class _MyLoadPageState extends State<MyLoadPage> {
height: 48,
child: Row(
children: <Widget>[

SizedBox(width: 60, child: Align( alignment: Alignment.centerLeft,child: Text("总利息:",style: TextStyle(color: Colors.black45)))),
Expanded(

child: TextField(
obscureText: false,
//是否是密码


keyboardType: TextInputType.number,
//数字输入
enabled: isCanInputRateMomey,
Expand All @@ -201,7 +211,7 @@ class _MyLoadPageState extends State<MyLoadPage> {
),
),
SizedBox(width: 10),
SizedBox(width: 80, child: Center(child: Text("单位(元)")))
SizedBox(width: 80, child: Center(child: Text(" 单位(元)")))
],
)),
onLongPress: () {
Expand All @@ -212,6 +222,23 @@ class _MyLoadPageState extends State<MyLoadPage> {
},
),
SizedBox(height: 16),


new InkWell(

onTap: (){
// Scaffold.of(context).showSnackBar(new SnackBar(content: Text("测试")));
}
,child: Container(

padding: EdgeInsets.all(12),
child: Text("33"),
),


),


GestureDetector(
child: Container(
color: Colors.deepOrange,
Expand All @@ -231,6 +258,10 @@ class _MyLoadPageState extends State<MyLoadPage> {

onTapUp: checkAndCalc,
),

SizedBox(height: 16),
SizedBox(height: 150,child: SingleChildScrollView(child: Text("$displayDetail")))

]),
),
);
Expand Down
2 changes: 1 addition & 1 deletion lib/view/rate_drop_down.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:loan_calc/ctrl/SpnnerControl.dart';

class RateDropDown extends StatefulWidget {

SpnnerControl control;
final SpnnerControl control;

RateDropDown(this.control);

Expand Down
7 changes: 7 additions & 0 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.3"
intl:
dependency: "direct main"
description:
name: intl
url: "https://pub.dartlang.org"
source: hosted
version: "0.15.7"
matcher:
dependency: transitive
description:
Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ environment:

dependencies:
fluttertoast: ^3.1.3
intl: 0.15.7
flutter:
sdk: flutter

Expand Down

0 comments on commit 4be0a59

Please sign in to comment.