Skip to content

Instantly share code, notes, and snippets.

@arifai
Created May 15, 2019 01:08
Show Gist options
  • Save arifai/96d80ed98d5c94266b8257be849ad808 to your computer and use it in GitHub Desktop.
Save arifai/96d80ed98d5c94266b8257be849ad808 to your computer and use it in GitHub Desktop.
import 'package:flutter/material.dart';
import 'package:misiku/models/transaction_model.dart';
import 'package:misiku/screen/project_detail/detail_transaction_screen.dart';
import 'package:misiku/utils/api_client.dart';
import 'package:rupiah/rupiah.dart';
class TransactionTabScreen extends StatefulWidget {
final Widget child;
TransactionTabScreen({Key key, this.child}) : super(key: key);
@override
TransactionTabScreenState createState() => TransactionTabScreenState();
}
class TransactionTabScreenState extends State<TransactionTabScreen>
with SingleTickerProviderStateMixin {
ApiClient api = new ApiClient();
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder(
future: api.getTx(),
builder: (BuildContext context, AsyncSnapshot<TxResponse> snap) {
if (snap.hasData) {
return ListView.separated(
itemCount: snap.data.result.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailTransactionScreen())
);
},
leading: Icon(Icons.monetization_on),
title: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
child: Text(
snap.data.result[index].txName,
style: TextStyle(
color: getColor(txType)
)
)
),
Container(
)
],
),
subtitle: Container(
child: Row(
children: <Widget>[
new Icon(Icons.access_time, size: 13.0, color: Colors.grey),
Padding(padding: EdgeInsets.all(5.0)),
Text(snap.data.result[index].txDate),
],
),
),
trailing: Text(rupiah(snap.data.result[index].txValue)),
);
},
separatorBuilder: (BuildContext context, int index) {
return Divider();
},
);
} else if(snap.hasError) {
return Text("${snap.error}");
}
return Center(
child: CircularProgressIndicator(),
);
}
),
);
}
}
Color getColor(txType) {
if (txType == "withdraw") {
return Colors.red;
} else if (txType == "reward") {
return Colors.green[400];
}
}
// // widget _txNamestatus
// Widget _txDescstatus(txType) {
// if (txType == "Withdraw from balance") {
// return Text(txType, style: TextStyle(color: Colors.red, fontSize: 14.0), );
// } else if (txType == "reward") {
// return Text(txType, style: TextStyle(color: Colors.green[400], fontSize: 14.0));
// }
// }
@luffynas
Copy link

import 'package:flutter/material.dart';
import 'package:misiku/models/transaction_model.dart';
import 'package:misiku/screen/project_detail/detail_transaction_screen.dart';
import 'package:misiku/utils/api_client.dart';
import 'package:rupiah/rupiah.dart';

class TransactionTabScreen extends StatefulWidget {
  final Widget child;

  TransactionTabScreen({Key key, this.child}) : super(key: key);

  @override
  TransactionTabScreenState createState() => TransactionTabScreenState();
}

class TransactionTabScreenState extends State<TransactionTabScreen>
    with SingleTickerProviderStateMixin {
  ApiClient api = new ApiClient();

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: FutureBuilder(
        future: api.getTx(),
        builder: (BuildContext context, AsyncSnapshot<TxResponse> snap) {
          if (snap.hasData) {
            return ListView.separated(
              itemCount: snap.data.result.length,
              itemBuilder: (BuildContext context, int index) {
                return ListTile(
                  onTap: () {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (context) => DetailTransactionScreen())
                      );
                  },

                  leading: Icon(Icons.monetization_on),
                  title: Column(
                    mainAxisSize: MainAxisSize.max,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                      Container(
                        child: Text(
                          snap.data.result[index].txName,
                          style: TextStyle(
                            color: getColor(snap.data.result[index].txType)
                            )
                          )
                      ),
                      Container(
                      )
                    ],
                  ),
                  subtitle: Container(
                    child: Row(
                      children: <Widget>[
                        new Icon(Icons.access_time, size: 13.0, color: Colors.grey),
                        Padding(padding: EdgeInsets.all(5.0)),
                        Text(snap.data.result[index].txDate),
                      ],
                    ),
                  ),
                  trailing: Text(rupiah(snap.data.result[index].txValue)),
                );
              }, 
              separatorBuilder: (BuildContext context, int index) {
                return Divider();
              },
            );
          } else if(snap.hasError) {
            return Text("${snap.error}");
          }
          return Center(
              child: CircularProgressIndicator(),
          );
        }
      ),
    );
  }
}

Color getColor(txType) {
  if (txType == "withdraw") {
    return Colors.red;
  } else if (txType == "reward") {
    return Colors.green[400];
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment