123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_wallet/base/YSBase.dart';
- import 'package:flutter_wallet/generated/l10n.dart';
- import 'package:flutter_wallet/login/view/YSHelpView.dart';
- import 'package:flutter_wallet/tools/YSColors.dart';
- import 'package:flutter_wallet/tools/YSNetWork.dart';
- import 'package:flutter_wallet/tools/YSRefrehLoad.dart';
- import 'package:flutter_wallet/tools/YSSqflite.dart';
- import 'package:flutter_wallet/tools/YSTools.dart';
- import 'package:flutter_wallet/wallet/YSTansDetail.dart';
- import 'YSWalletCollection.dart';
- import 'YSWalletTransfer.dart';
- class YSWalletListItemDetail extends StatefulWidget {
- final Map item;
- const YSWalletListItemDetail({Key? key, required this.item}) : super(key: key);
- @override
- YSWalletListItemDetailState createState() => YSWalletListItemDetailState();
- }
- class YSWalletListItemDetailState extends State<YSWalletListItemDetail> {
- List _dataArray = [];
- Map _token = {};
- @override
- void initState() {
- networkDelay((){
- _getToken();
- });
- super.initState();
- }
- _getToken() {
- List list = YSData().allTokenArray.where((element) => element['address']==widget.item['address']).toList();
- if(list.isNotEmpty){
- _token = list.first;
- }else{
- _token = widget.item;
- }
- setState(() {});
- }
- @override
- Widget build(BuildContext context) {
- return YSBase2(
- isScroll: false,
- ysTitle: _token['name']??'',
- // ysRightWidget: GestureDetector(
- // onTap: (){},
- // child: Text(S.current.DAIBIXIANGQING,style: YSColors.content2Style(context),),
- // ),
- ysChild: _token.isEmpty?Container():Padding(
- padding: EdgeInsets.only(left: hsp(20),right: hsp(20)),
- child: Column(
- children: [
- Container(
- margin: EdgeInsets.only(top: hsp(20)),
- height: hsp(60),
- width: hsp(60),
- decoration: BoxDecoration(
- color: Colors.grey,
- borderRadius: const BorderRadius.all(Radius.circular(50)),
- border: Border.all(color: YSColors.containColor(context),width: hsp(2)),
- image: DecorationImage(image: NetworkImage(_token['icon_url']))
- ),
- ),
- Padding(
- padding: EdgeInsets.only(top: hsp(10)),
- child: Text('${_token['name']} ',style: YSColors.title2Style(context),),
- ),
- YSBalanceView(public: _token['address'],style: YSColors.sub2Style(context),walletAddress: YSData().wallet['public'],type: 1,),
- // Text('\$ 82.878',style: YSColors.sub2Style(context),),
- Container(
- height: hsp(45),
- decoration: BoxDecoration(
- color: YSColors.containColor(context),
- borderRadius: const BorderRadius.all(Radius.circular(10))
- ),
- margin: EdgeInsets.only(top: hsp(15)),
- padding: EdgeInsets.only(left: hsp(15),right: hsp(15)),
- child: Row(
- children: [
- Text(S.current.JIAGE,style: YSColors.contentStyle(context),),
- if(_token['price_usd']!=null)Expanded(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.end,
- mainAxisSize: MainAxisSize.min,
- children: [
- Text(toDecimalFlex(_token['price_usd'],range: 4),style: YSColors.subStyle(context),),
- Text('\$ ${toDecimalFlex(_token['price_usd'],range: 4)}',style: YSColors.sub3Style(context),),
- ],
- )
- )
- ],
- ),
- ),
- Container(
- margin: EdgeInsets.only(top: hsp(40)),
- height: hsp(20),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Text(S.current.JIAOYIJILU,style: YSColors.contentStyle(context),),
- PopupMenuButton(
- itemBuilder: (BuildContext context) {
- return [
- PopupMenuItem(value: "0",child: Text("全部",style: YSColors.contentStyle(context),),),
- PopupMenuItem(value: "1",child: Text("转入",style: YSColors.contentStyle(context),),),
- PopupMenuItem(value: "2",child: Text("转出",style: YSColors.contentStyle(context),),),
- ];
- },
- child: Image.asset(YSColors.imageStyle(context, '更多 (5)'),height: hsp(15),width: hsp(15),),
- onSelected: (value){
- Map request = YSData().wallet['public']!=_token['address']?{
- 'chain_id':YSData().typeId,'contract_address':_token['address'],'address':YSData().wallet['public'],'type':0
- }:{
- 'chain_id':YSData().typeId,'address':YSData().wallet['public'],'type':0
- };
- request['type'] = value;
- refreshKey.currentState?.refresh(request: request);
- },
- )
- ],
- ),
- ),
- Expanded(
- child: Container(
- margin: EdgeInsets.only(top: hsp(10),bottom: hsp(15)),
- decoration: BoxDecoration(
- color: YSColors.containColor(context),
- borderRadius: const BorderRadius.all(Radius.circular(10))
- ),
- padding: EdgeInsets.all(hsp(15)),
- child: LayoutBuilder(
- builder: (context,conSize) {
- return Column(
- children: [
- // Container(
- // height: hsp(40),
- // decoration: const BoxDecoration(
- // color: Color(0xFFEFF1F9),
- // borderRadius: BorderRadius.all(Radius.circular(10))
- // ),
- // padding: EdgeInsets.only(left: hsp(15),right: hsp(15)),
- // child: Row(
- // children: [
- // SizedBox(
- // width: conSize.maxWidth-hsp(50),
- // child: Text(S.current.NINYIKAIQIYINCANGXIAOEJIAOYI,style: TextStyle(fontSize: zsp(11),color: const Color(0xFF3D5AFF)),),
- // ),
- // Icon(Icons.chevron_right,size: hsp(20),color: const Color(0xFF3D5AFF),)
- // ],
- // ),
- // ),
- SizedBox(
- height: conSize.maxHeight-hsp(0),
- child: YSRefreshLoad(
- key: refreshKey,
- url: 'transactions',
- request: YSData().wallet['public']!=_token['address']?{
- 'chain_id':YSData().typeId,'contract_address':_token['address'],'address':YSData().wallet['public'],'type':0
- }:{
- 'chain_id':YSData().typeId,'address':YSData().wallet['public'],'type':0
- },
- postData: (value) async{
- _dataArray = value;
- YSTansTable table = YSTansTable().init();
- List array = await table.rawQuery();
- List temp = [];
- for (var element in _dataArray) {
- for (var element2 in array) {
- if(element2['hash']==element['hash']){
- temp.add(element2);
- table.rawDelete('${element2['id']}');
- }
- }
- }
- for (var element in temp) {
- array.remove(element);
- }
- _dataArray.insertAll(0,array);
- setState(() {});
- },
- child: SingleChildScrollView(
- child: ListView.builder(
- itemBuilder: (context,index){
- Map item = _dataArray[index];
- return GestureDetector(
- onTap: (){
- LogUtil.d(item);
- Navigator.of(context).push(
- CupertinoPageRoute(builder: (context){
- return YSTansDetail(item: item,tokenAddress: _token['address'],);
- })
- );
- },
- behavior: HitTestBehavior.opaque,
- child: Container(
- padding: EdgeInsets.only(top: hsp(10),bottom: hsp(10)),
- decoration: BoxDecoration(
- border: Border(top: BorderSide(color: YSColors.lineColor(context),width: hsp(1)))
- ),
- child: Row(
- children: [
- Image.asset(YSColors.imageStyle(context, '编组 ${item['type']==1?'64':'54'}'),height: hsp(30),width: hsp(30),),
- Expanded(
- child: Padding(
- padding: EdgeInsets.only(left: hsp(10),right: hsp(10)),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Row(
- children: [
- Container(
- constraints: BoxConstraints(
- maxWidth: conSize.maxWidth-hsp(190),
- ),
- child: Text(ysTextCut(item['to_addr']),style: YSColors.contentStyle(context),maxLines: 1,),
- ),
- Padding(
- padding: const EdgeInsets.only(left: 5),
- child: GestureDetector(
- onTap: (){
- YSCopyPaste.copy(item['to_addr']);
- },
- child: Image.asset(YSColors.imageStyle(context, '复制备份'),height: hsp(10),width: hsp(10),),
- ),
- )
- ],
- ),
- if(item['timestamp']!=null)Text('${toDateFlex(item['timestamp'])}',style: YSColors.subStyle(context),maxLines: 1,),
- ],
- ),
- )
- ),
- Container(
- width: hsp(100),
- alignment: Alignment.centerRight,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.end,
- children: [
- Text(('${item['status']}'=='1'?S.current.JIAOYICHENGGONG:'${item['status']}'=='0'?S.current.JIAOYISHIBAI:S.current.JIAOYIZHONG).fixAutoLines(),
- style: TextStyle(fontSize: zsp(10),color: '${item['status']}'=='1'?const Color(0xFF68AF64):const Color(0xFFDE5656)),maxLines: 1,),
- if(item['symbol']!=null)Padding(
- padding: EdgeInsets.only(top: hsp(5)),
- child: Text(''
- '${item['type']==2?'-':item['type']==1?'+':''}${toDecimalFlex((item['value']??double.parse(item['amount']??'0')),decimal: item['decimal']??0,range: 5)}${item['symbol']??''}',
- style: TextStyle(fontSize: zsp(12),color: item['type']==1?const Color(0xFF68AF64):const Color(0xFFDE5656)),maxLines: 1,),
- )
- ],
- ),
- )
- ],
- ),
- ),
- );
- },
- itemCount: _dataArray.length,
- padding: EdgeInsets.only(top: hsp(15)),
- shrinkWrap: true,
- physics: const NeverScrollableScrollPhysics(),
- ),
- ),
- ),
- )
- ],
- );
- }
- ),
- )
- ),
- Container(
- margin: EdgeInsets.only(bottom: hsp(15)),
- height: hsp(45),
- child: Row(
- children: [
- Expanded(
- child: GestureDetector(
- onTap: (){
- Navigator.of(context).push(
- CupertinoPageRoute(builder: (context){
- return const YSWalletTransfer();
- })
- ).then((value) {
- Map request = YSData().wallet['public']!=_token['address']?{
- 'chain_id':YSData().typeId,'contract_address':_token['address'],'address':YSData().wallet['public'],'type':0
- }:{
- 'chain_id':YSData().typeId,'address':YSData().wallet['public'],'type':0
- };
- refreshKey.currentState?.refresh(request: request);
- });
- },
- behavior: HitTestBehavior.opaque,
- child: Container(
- decoration: const BoxDecoration(
- color: Color(0xFF68AF64),
- borderRadius: BorderRadius.all(Radius.circular(10))
- ),
- alignment: Alignment.center,
- child: SingleChildScrollView(
- physics: const NeverScrollableScrollPhysics(),
- scrollDirection: Axis.horizontal,
- child: Row(
- mainAxisSize: MainAxisSize.min,
- children: [
- Image.asset(YSColors.imageStyle(context, '形状3'),height: hsp(15),width: hsp(15),),
- Text(' ${S.current.ZHUANZHANG}',style: YSColors.buttonStyle(context),)
- ],
- ),
- ),
- ),
- )
- ),
- SizedBox(width: hsp(15),),
- Expanded(
- child: GestureDetector(
- onTap: (){
- Navigator.of(context).push(
- CupertinoPageRoute(builder: (context){
- return YSWalletCollection(wallet: YSData().wallet,);
- })
- );
- },
- behavior: HitTestBehavior.opaque,
- child: Container(
- decoration: const BoxDecoration(
- color: Color(0xFF3D5AFF),
- borderRadius: BorderRadius.all(Radius.circular(10))
- ),
- alignment: Alignment.center,
- child: Row(
- mainAxisSize: MainAxisSize.min,
- children: [
- Image.asset(YSColors.imageStyle(context, '形状 2'),height: hsp(15),width: hsp(15),),
- Text(' ${S.current.SHOUKUAN}',style: YSColors.buttonStyle(context),)
- ],
- ),
- ),
- )
- )
- ],
- ),
- )
- ],
- ),
- ),
- );
- }
- }
|