Skip to content

Instantly share code, notes, and snippets.

@OldMetalmind
Last active April 30, 2024 16:30
Show Gist options
  • Save OldMetalmind/dd9ad0e37966cfcbdb48b2fefd91e99e to your computer and use it in GitHub Desktop.
Save OldMetalmind/dd9ad0e37966cfcbdb48b2fefd91e99e to your computer and use it in GitHub Desktop.
Small Flutter Example
import 'package:flutter/material.dart';
void main() {
runApp(const MainApp());
}
final invoices = [
Invoice(
invoiceId: 'INV-001',
invoiceDate: '2021-10-01',
invoiceAmount: 100.00,
invoiceStatus: 'paid',
),
Invoice(
invoiceId: 'INV-002',
invoiceDate: '2021-10-02',
invoiceAmount: 200.00,
invoiceStatus: 'unpaid',
),
Invoice(
invoiceId: 'INV-003',
invoiceDate: '2021-10-03',
invoiceAmount: 300.00,
invoiceStatus: 'unknown',
),
];
class MainApp extends StatelessWidget {
const MainApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Column(
children: [
/// ... -> Spread operator
...invoices.map(
(invoice) => InvoiceDefinition(invoice: invoice),
)
],
),
),
));
}
}
class InvoiceDefinition extends StatelessWidget {
final Invoice invoice;
const InvoiceDefinition({
super.key,
required this.invoice,
});
@override
Widget build(BuildContext context) {
return Column(
children: [
Row(
children: [
Text('Invoice ID: ${invoice.invoiceId}'),
Text('Invoice Date: ${invoice.invoiceDate}'),
Text('Invoice Amount: ${invoice.invoiceAmount}'),
],
),
/// Switch expression
switch (invoice.invoiceStatus) {
// or Text(context.mt.paid)
'paid' => const Text('Invoice Status: Paid'),
// or Text(context.mt.unpaid)
'unpaid' => const Text('Invoice Status: Unpaid'),
// or Text(context.mt.unknown)
_ => const Text('Invoice Status: Unknown'),
}
],
);
}
}
class Invoice {
String invoiceId;
String invoiceDate;
double invoiceAmount;
String invoiceStatus;
Invoice({
required this.invoiceId,
required this.invoiceDate,
required this.invoiceAmount,
required this.invoiceStatus,
});
factory Invoice.fromJson(Map<String, dynamic> json) {
return Invoice(
invoiceId: json['invoiceId'],
invoiceDate: json['invoiceDate'],
invoiceAmount: json['invoiceAmount'],
invoiceStatus: json['invoiceStatus'],
);
}
Map<String, dynamic> toJson() => {
'invoiceId': invoiceId,
'invoiceDate': invoiceDate,
'invoiceAmount': invoiceAmount,
'invoiceStatus': invoiceStatus,
};
@override
String toString() {
return 'Invoice{invoiceId: $invoiceId, invoiceDate: $invoiceDate, invoiceAmount: $invoiceAmount, invoiceStatus: $invoiceStatus}';
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment