Add Total Price In Product
Complete Code For Add Total Price In Product In Flutter
main.dart
import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, visualDensity: VisualDensity.adaptivePlatformDensity, ), home: OrderPage(), ); } } class cartConstant { static int packageCount; static List<int> list; } class OrderPage extends StatefulWidget { @override _OrderPageState createState() => _OrderPageState(); } class _OrderPageState extends State<OrderPage> { int data = 3; void refresh() { setState(() {}); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, appBar: AppBar( automaticallyImplyLeading: true, iconTheme: IconThemeData( color: Colors.black54, ), backgroundColor: Colors.orange[800], elevation: 1, title: Text( "Order History", style: TextStyle(color: Colors.white), ), centerTitle: true, ), body: Container( child: FutureBuilder( builder: (context, snapshot) { return ListView.builder( physics: ClampingScrollPhysics(), shrinkWrap: true, itemCount: data, itemBuilder: (BuildContext context, int index) { return CartListView(refresh); }, padding: EdgeInsets.symmetric(horizontal: 10.0), scrollDirection: Axis.vertical, ); }, ), ), bottomNavigationBar: _buildTotalContainer(), ); } Widget _buildTotalContainer() { return Container( height: 200.0, padding: EdgeInsets.only(left: 5.0, right: 5.0,), child: Column( children: <Widget>[ Padding( padding: const EdgeInsets.only(top: 30), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <Widget>[ Text( "Subtotal", style: TextStyle( color: Colors.black54, fontSize: 14.0, fontWeight: FontWeight.bold), ), Text( cartConstant.packageCount.toString(), style: TextStyle( color: Colors.orange[800], fontSize: 16.0, fontWeight: FontWeight.bold), ), ], ), ), SizedBox(height: 15), Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <Widget>[ Text( "Discount", style: TextStyle( color: Colors.black54, fontSize: 14.0, fontWeight: FontWeight.bold), ), Text( "0.0", style: TextStyle( color: Colors.orange[800], fontWeight: FontWeight.bold), ), ], ), SizedBox(height: 15), Divider(height: 2.0,), Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <Widget>[ Text( "Cart Total", style: TextStyle( color: Colors.black54, fontSize: 14.0, fontWeight: FontWeight.bold), ), Text( "8000", style: TextStyle( color: Colors.orange[800], fontSize: 16.0, fontWeight: FontWeight.bold), ), ], ), SizedBox(height: 20.0,), GestureDetector( onTap: () {}, child: Container( height: 40.0, decoration: BoxDecoration( color: Colors.orange[800], borderRadius: BorderRadius.circular(0.0), ), child: Center( child: Text( "Checkout", style: TextStyle( color: Colors.white, fontSize: 12.0, fontWeight: FontWeight.bold, ), ), ), ), ), SizedBox( height: 20.0, ), ], ), ); } } class CartListView extends StatefulWidget { VoidCallback callback; CartListView(this.callback); @override _CartListViewState createState() => _CartListViewState(); } class _CartListViewState extends State<CartListView> { int _counter = 1; int getPrice(int i, int priceC) { cartConstant.packageCount = i * priceC; return cartConstant.packageCount; } @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.only(top:15.0), child: Card( child: Padding( padding: EdgeInsets.symmetric(horizontal: 5.0, vertical: 12.0), child: Row( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[ Container( decoration: BoxDecoration( border: Border.all(color: Color(0xFFD3D3D3), width: 2.0), borderRadius: BorderRadius.circular(10.0), ), child: Padding( padding: EdgeInsets.symmetric( horizontal: 5.0, ), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: <Widget>[ InkWell( onTap: () { setState(() { _counter++; if (_counter > 20) { _counter = 20; } }); widget.callback(); }, child: Icon(Icons.add, color: Color(0xFFD3D3D3))), Text( "$_counter", style: TextStyle(fontSize: 18.0, color: Colors.grey), ), InkWell( onTap: () { setState(() { _counter--; if (_counter < 2) { _counter = 1; } }); widget.callback(); }, child: Icon(Icons.remove, color: Color(0xFFD3D3D3))), ], ), ), ), SizedBox(width: 10.0,), Container( height: 70.0, width: 70.0, decoration: BoxDecoration( image: DecorationImage( image: AssetImage("assets/images/img3.jpg"), fit: BoxFit.cover), borderRadius: BorderRadius.circular(35.0), boxShadow: [ BoxShadow( color: Colors.black54, blurRadius: 5.0, offset: Offset(0.0, 2.0)) ]), ), SizedBox(width: 15.0,), Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[ Text( "Employee Package", style: TextStyle(fontSize: 12.0, fontWeight: FontWeight.bold), ), SizedBox(height: 5.0), SizedBox(height: 5.0), Container( height: 25.0, width: 120.0, child: ListView( scrollDirection: Axis.horizontal, children: <Widget>[ Row( children: <Widget>[ Text("Price: ", style: TextStyle( color: Colors.black45, fontWeight: FontWeight.bold)), SizedBox(width: 5.0,), InkWell( onTap: () {}, child: Text( getPrice(_counter, 2000).toString(), style: TextStyle( fontWeight: FontWeight.bold, color: Colors.orange[800], ), ), ), SizedBox( width: 10.0, ), ], ), ], ), ), ], ), Spacer(), GestureDetector( onTap: () {}, child: Icon( Icons.cancel, color: Colors.grey, ), ), ], ), ), ), ); } }