Advertisement
ravipatil6596

Listview

Sep 29th, 2022
809
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 14.06 KB | Help | 0 0
  1. //your Address Class
  2.  
  3. class AddressDetails {
  4.   String? address;
  5.   String? balance;
  6.   String? coinName;
  7.  
  8.   AddressDetails({
  9.     this.address,
  10.     this.balance,
  11.     this.coinName,
  12.   });
  13.  
  14.   AddressDetails.fromJson(Map<String, dynamic> json) {
  15.     address = json['address'];
  16.     balance = json['balance'];
  17.     coinName = json['coin_name'];
  18.   }
  19.  
  20.   Map<String, dynamic> toJson() {
  21.     final Map<String, dynamic> data = <String, dynamic>{};
  22.     data['address'] = address;
  23.     data['balance'] = balance;
  24.     data['coin_name'] = coinName;
  25.  
  26.     return data;
  27.   }
  28. }
  29. //your transaction class
  30. class TransactionDetails {
  31.   String? avatar;
  32.   String? name;
  33.   String? date;
  34.   String? amount;
  35.  
  36.   TransactionDetails({
  37.     this.avatar,
  38.     this.name,
  39.     this.date,
  40.     this.amount,
  41.   });
  42.  
  43.   TransactionDetails.fromJson(Map<String, dynamic> json) {
  44.     avatar = json['avatar'];
  45.     name = json['name'];
  46.     date = json['date'];
  47.     amount = json['amount'];
  48.   }
  49.  
  50.   Map<String, dynamic> toJson() {
  51.     final Map<String, dynamic> data = <String, dynamic>{};
  52.     data['avatar'] = avatar;
  53.     data['name'] = name;
  54.     data['date'] = date;
  55.     data['amount'] = amount;
  56.     return data;
  57.   }
  58. }
  59. //your Addrees API function
  60.   Future<List<AddressDetails>> getAddressData() async {
  61.     final response = await http.get(
  62.       Uri.parse(
  63.         'https://brotherlike-navies.000webhostapp.com/address/addr.php',
  64.       ),
  65.     );
  66.  
  67.     if (response.statusCode == 200) {
  68.       final List result = json.decode(response.body);
  69.       return result.map((e) => AddressDetails.fromJson(e)).toList();
  70.     } else {
  71.       throw Exception('Failed to load data');
  72.     }
  73.   }
  74. //your Transaction API
  75.   Future<List<TransactionDetails>> getTransactionData() async {
  76.     final response = await http.get(Uri.parse(
  77.         'https://brotherlike-navies.000webhostapp.com/people/people.php'));
  78.  
  79.     if (response.statusCode == 200) {
  80.       final List result = json.decode(response.body);
  81.       return result.map((e) => TransactionDetails.fromJson(e)).toList();
  82.     } else {
  83.       throw Exception('Failed to load data');
  84.     }
  85.   }
  86.  
  87. //If you want only Transaction List Scroll then use below widget
  88.  
  89. Column(
  90.         crossAxisAlignment: CrossAxisAlignment.start,
  91.         children: [
  92.           SizedBox(
  93.             width: double.infinity,
  94.             height: 200,
  95.             child: FutureBuilder<List<AddressDetails>>(
  96.               future: getAddressData(),
  97.               builder: (context, snapshot) {
  98.                 if (snapshot.hasData) {
  99.                   return ListView.builder(
  100.                     scrollDirection: Axis.horizontal,
  101.                     shrinkWrap: true,
  102.                     itemCount: snapshot.data!.length,
  103.                     itemBuilder: (context, index) {
  104.                       return Container(
  105.                         padding: const EdgeInsets.all(15),
  106.                         margin: const EdgeInsets.all(15),
  107.                         width: 319,
  108.                         height: 100,
  109.                         decoration: BoxDecoration(
  110.                             boxShadow: [
  111.                               BoxShadow(
  112.                                 color: const Color.fromARGB(255, 233, 230, 230)
  113.                                     .withOpacity(0.8),
  114.                                 spreadRadius: 5,
  115.                                 blurRadius: 3,
  116.                                 offset: const Offset(
  117.                                     0, 7), // changes position of shadow
  118.                               ),
  119.                             ],
  120.                             color: Colors.green,
  121.                             borderRadius: BorderRadius.circular(9)),
  122.                         alignment: Alignment.center,
  123.                         child: Column(
  124.                           mainAxisAlignment: MainAxisAlignment.start,
  125.                           children: [
  126.                             const Text(
  127.                               'Account Balance',
  128.                               style: TextStyle(
  129.                                   fontSize: 20,
  130.                                   color: Colors.white,
  131.                                   fontWeight: FontWeight.bold),
  132.                             ),
  133.                             const SizedBox(
  134.                               height: 20,
  135.                             ),
  136.                             Row(
  137.                               mainAxisAlignment: MainAxisAlignment.center,
  138.                               children: [
  139.                                 Text(
  140.                                   snapshot.data![index].balance.toString(),
  141.                                   style: const TextStyle(
  142.                                       fontSize: 20,
  143.                                       color: Colors.white,
  144.                                       fontWeight: FontWeight.bold),
  145.                                 ),
  146.                                 const SizedBox(
  147.                                   width: 5,
  148.                                 ),
  149.                                 Text(
  150.                                   snapshot.data![index].coinName.toString(),
  151.                                   style: const TextStyle(
  152.                                       fontSize: 20,
  153.                                       color: Colors.white,
  154.                                       fontWeight: FontWeight.bold),
  155.                                 ),
  156.                               ],
  157.                             ),
  158.                             const SizedBox(
  159.                               height: 30,
  160.                             ),
  161.                             Text(
  162.                               snapshot.data![index].address.toString(),
  163.                               style: const TextStyle(
  164.                                 fontSize: 15,
  165.                                 color: Colors.white,
  166.                                 fontWeight: FontWeight.w600,
  167.                               ),
  168.                             ),
  169.                           ],
  170.                         ),
  171.                       );
  172.                     },
  173.                   );
  174.                 } else if (snapshot.hasError) {
  175.                   return Text('${snapshot.error}');
  176.                 }
  177.                 return const Center(child: CircularProgressIndicator());
  178.               },
  179.             ),
  180.           ),
  181.           const Padding(
  182.             padding: EdgeInsets.all(15),
  183.             child: Text(
  184.               "Recent Transactions",
  185.               style: TextStyle(
  186.                   fontSize: 14,
  187.                   fontWeight: FontWeight.bold,
  188.                   color: Colors.green),
  189.             ),
  190.           ),
  191.           Expanded(
  192.             child: Center(
  193.               child: FutureBuilder<List<TransactionDetails>>(
  194.                 future: getTransactionData(),
  195.                 builder: (context, snapshot) {
  196.                   if (snapshot.hasData) {
  197.                     return ListView.builder(
  198.                       //   physics: const NeverScrollableScrollPhysics(),
  199.                       shrinkWrap: true,
  200.                       itemCount: snapshot.data!.length,
  201.                       itemBuilder: (context, index) {
  202.                         return ListTile(
  203.                           leading: CircleAvatar(
  204.                             child: Image.network(
  205.                                 snapshot.data![index].avatar.toString()),
  206.                           ),
  207.                           title: Text(snapshot.data![index].name.toString()),
  208.                           trailing:
  209.                               Text(snapshot.data![index].amount.toString()),
  210.                           subtitle: Text(snapshot.data![index].date.toString()),
  211.                         );
  212.                       },
  213.                     );
  214.                   } else if (snapshot.hasError) {
  215.                     return Text('${snapshot.error}');
  216.                   }
  217.                   return const CircularProgressIndicator();
  218.                 },
  219.               ),
  220.             ),
  221.           ),
  222.         ],
  223.       ),
  224.  
  225. //If you want your whole widget to scroll then used below code
  226.  
  227. SingleChildScrollView(
  228.         child: Column(
  229.           crossAxisAlignment: CrossAxisAlignment.start,
  230.           children: [
  231.             SizedBox(
  232.               width: double.infinity,
  233.               height: 200,
  234.               child: FutureBuilder<List<AddressDetails>>(
  235.                 future: getAddressData(),
  236.                 builder: (context, snapshot) {
  237.                   if (snapshot.hasData) {
  238.                     return ListView.builder(
  239.                       scrollDirection: Axis.horizontal,
  240.                       shrinkWrap: true,
  241.                       itemCount: snapshot.data!.length,
  242.                       itemBuilder: (context, index) {
  243.                         return Container(
  244.                           padding: const EdgeInsets.all(15),
  245.                           margin: const EdgeInsets.all(15),
  246.                           width: 319,
  247.                           height: 100,
  248.                           decoration: BoxDecoration(
  249.                               boxShadow: [
  250.                                 BoxShadow(
  251.                                   color:
  252.                                       const Color.fromARGB(255, 233, 230, 230)
  253.                                           .withOpacity(0.8),
  254.                                   spreadRadius: 5,
  255.                                   blurRadius: 3,
  256.                                   offset: const Offset(
  257.                                       0, 7), // changes position of shadow
  258.                                 ),
  259.                               ],
  260.                               color: Colors.green,
  261.                               borderRadius: BorderRadius.circular(9)),
  262.                           alignment: Alignment.center,
  263.                           child: Column(
  264.                             mainAxisAlignment: MainAxisAlignment.start,
  265.                             children: [
  266.                               const Text(
  267.                                 'Account Balance',
  268.                                 style: TextStyle(
  269.                                     fontSize: 20,
  270.                                     color: Colors.white,
  271.                                     fontWeight: FontWeight.bold),
  272.                               ),
  273.                               const SizedBox(
  274.                                 height: 20,
  275.                               ),
  276.                               Row(
  277.                                 mainAxisAlignment: MainAxisAlignment.center,
  278.                                 children: [
  279.                                   Text(
  280.                                     snapshot.data![index].balance.toString(),
  281.                                     style: const TextStyle(
  282.                                         fontSize: 20,
  283.                                         color: Colors.white,
  284.                                         fontWeight: FontWeight.bold),
  285.                                   ),
  286.                                   const SizedBox(
  287.                                     width: 5,
  288.                                   ),
  289.                                   Text(
  290.                                     snapshot.data![index].coinName.toString(),
  291.                                     style: const TextStyle(
  292.                                         fontSize: 20,
  293.                                         color: Colors.white,
  294.                                         fontWeight: FontWeight.bold),
  295.                                   ),
  296.                                 ],
  297.                               ),
  298.                               const SizedBox(
  299.                                 height: 30,
  300.                               ),
  301.                               Text(
  302.                                 snapshot.data![index].address.toString(),
  303.                                 style: const TextStyle(
  304.                                   fontSize: 15,
  305.                                   color: Colors.white,
  306.                                   fontWeight: FontWeight.w600,
  307.                                 ),
  308.                               ),
  309.                             ],
  310.                           ),
  311.                         );
  312.                       },
  313.                     );
  314.                   } else if (snapshot.hasError) {
  315.                     return Text('${snapshot.error}');
  316.                   }
  317.                   return const Center(child: CircularProgressIndicator());
  318.                 },
  319.               ),
  320.             ),
  321.             const Padding(
  322.               padding: EdgeInsets.all(15),
  323.               child: Text(
  324.                 "Recent Transactions",
  325.                 style: TextStyle(
  326.                     fontSize: 14,
  327.                     fontWeight: FontWeight.bold,
  328.                     color: Colors.green),
  329.               ),
  330.             ),
  331.             Center(
  332.               child: FutureBuilder<List<TransactionDetails>>(
  333.                 future: getTransactionData(),
  334.                 builder: (context, snapshot) {
  335.                   if (snapshot.hasData) {
  336.                     return ListView.builder(
  337.                       physics: const NeverScrollableScrollPhysics(),
  338.                       shrinkWrap: true,
  339.                       itemCount: snapshot.data!.length,
  340.                       itemBuilder: (context, index) {
  341.                         return ListTile(
  342.                           leading: CircleAvatar(
  343.                             child: Image.network(
  344.                                 snapshot.data![index].avatar.toString()),
  345.                           ),
  346.                           title: Text(snapshot.data![index].name.toString()),
  347.                           trailing:
  348.                               Text(snapshot.data![index].amount.toString()),
  349.                           subtitle: Text(snapshot.data![index].date.toString()),
  350.                         );
  351.                       },
  352.                     );
  353.                   } else if (snapshot.hasError) {
  354.                     return Text('${snapshot.error}');
  355.                   }
  356.                   return const CircularProgressIndicator();
  357.                 },
  358.               ),
  359.             ),
  360.           ],
  361.         ),
  362.       ),
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement