Flutter 在颤振中创建自定义比较图表时,如何调整容器以百分比形式占用所需空间
我想创建一个简单的收入和支出对比表。我想让堆栈根据场景占据所需的空间。我的意思是,如果收入大于支出,那么它应该比顶部有绿色容器和文本的支出占用更多的空间。同样,支出应该比收入占用更少的空间。以下是我到目前为止所做的Flutter 在颤振中创建自定义比较图表时,如何调整容器以百分比形式占用所需空间,flutter,bar-chart,Flutter,Bar Chart,我想创建一个简单的收入和支出对比表。我想让堆栈根据场景占据所需的空间。我的意思是,如果收入大于支出,那么它应该比顶部有绿色容器和文本的支出占用更多的空间。同样,支出应该比收入占用更少的空间。以下是我到目前为止所做的 int income=200000; int spending=15000; var spendingPercent; double percent; percent=(income/spending); spendi
int income=200000;
int spending=15000;
var spendingPercent;
double percent;
percent=(income/spending);
spendingPercent=(spending/income);
print('spending percent $spendingPercent');
print('Percent $percent');
var diff=income-spending;
return Scaffold(
backgroundColor: Theme.of(context).primaryColor,
body: SafeArea(
child: Column(
children: <Widget>[
Container(
child: Center(
child: Text('Hello ',style: TextStyle(color: Colors.white,fontSize: 32.0),),
),
),
Align(
alignment: Alignment.bottomCenter,
child: IntrinsicHeight(
child: Row(
children: [
Container(
width: MediaQuery.of(context).size.width/2-5,
height: MediaQuery.of(context).size.height*0.85,
child: Stack(
alignment: Alignment.bottomCenter,
children:<Widget> [
Container(
width: MediaQuery.of(context).size.width/2,
height: income>spending?MediaQuery.of(context).size.height*0.6-percent-100:MediaQuery.of(context).size.height*0.6-spendingPercent,
color: Color(0xFF484A54),
),
Positioned(
bottom: income>spending?MediaQuery.of(context).size.height*0.6-percent-100:MediaQuery.of(context).size.height*0.6-spendingPercent,
child: Container(
width: MediaQuery.of(context).size.width/2,
height: 15.0,
color: income>spending?Colors.green:Color(0xffE44663),
),
),
Positioned(
bottom: income>spending?MediaQuery.of(context).size.height*0.6-percent-80:MediaQuery.of(context).size.height*0.6-spendingPercent-160,
child: Text('$income',style: TextStyle(color: Colors.white,fontSize: 20.0),),)
],
),
),
VerticalDivider(width: 1.0,color: Colors.black54,),
Container(
width: MediaQuery.of(context).size.width/2-2,
height: MediaQuery.of(context).size.height*0.85,
child: Stack(
alignment: Alignment.bottomCenter,
children:<Widget> [
Container(
width: MediaQuery.of(context).size.width/2,
height: spending>income?MediaQuery.of(context).size.height*0.6-spendingPercent:MediaQuery.of(context).size.height*0.6-percent,
color: Color(0xFF484A54),
),
Positioned(
bottom: spending>income?MediaQuery.of(context).size.height*0.6-spendingPercent:MediaQuery.of(context).size.height*0.6-percent,
child: Container(
width: MediaQuery.of(context).size.width/2,
height: 15.0,
color: spending>income?Colors.green:Color(0xffE44663),
),
),
],
),
),
],
),
),
)
],
),
)
);
int收入=200000;
国际支出=15000;
var支出百分比;
百分之二;
百分比=(收入/支出);
支出百分比=(支出/收入);
打印(“支出百分比$spendingPercent”);
打印(“百分比$百分比”);
var diff=收入支出;
返回脚手架(
背景色:主题。背景色,
正文:安全区(
子:列(
儿童:[
容器(
儿童:中心(
子项:Text('Hello',style:TextStyle(颜色:Colors.white,fontSize:32.0)),
),
),
对齐(
对齐:对齐.bottomCenter,
孩子:内在的(
孩子:排(
儿童:[
容器(
宽度:MediaQuery.of(context).size.width/2-5,
高度:MediaQuery.of(上下文).size.height*0.85,
子:堆栈(
对齐:对齐.bottomCenter,
儿童:[
容器(
宽度:MediaQuery.of(context).size.width/2,
高度:收入>支出?MediaQuery.of(上下文)。大小。高度*0.6%-100:MediaQuery.of(上下文)。大小。高度*0.6-spendingPercent,
颜色:颜色(0xFF484A54),
),
定位(
底部:收入>支出?MediaQuery.of(上下文).大小.高度*0.6%-100:MediaQuery.of(上下文).大小.高度*0.6-spendingPercent,
子:容器(
宽度:MediaQuery.of(context).size.width/2,
身高:15.0,
颜色:收入>支出?颜色。绿色:颜色(0xffE44663),
),
),
定位(
底部:收入>支出?MediaQuery.of(上下文).大小.高度*0.6%-80:MediaQuery.of(上下文).大小.高度*0.6-spendingPercent-160,
子项:文本(“$income”,样式:TextStyle(颜色:Colors.white,fontSize:20.0),)
],
),
),
垂直分隔线(宽度:1.0,颜色:Colors.black54,),
容器(
宽度:MediaQuery.of(context).size.width/2-2,
高度:MediaQuery.of(上下文).size.height*0.85,
子:堆栈(
对齐:对齐.bottomCenter,
儿童:[
容器(
宽度:MediaQuery.of(context).size.width/2,
高度:支出>收入?MediaQuery.of(上下文)。大小。高度*0.6-spendingPercent:MediaQuery.of(上下文)。大小。高度*0.6-percent,
颜色:颜色(0xFF484A54),
),
定位(
底部:支出>收入?MediaQuery.of(上下文)。大小。高度*0.6-spendingPercent:MediaQuery.of(上下文)。大小。高度*0.6-percent,
子:容器(
宽度:MediaQuery.of(context).size.width/2,
身高:15.0,
颜色:支出>收入?颜色。绿色:颜色(0xffE44663),
),
),
],
),
),
],
),
),
)
],
),
)
);