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),
),
),
],
),
),
],
),
),
)
],
),
)
);