- created snackbar, step indicator, money text, text field and progress bar components.

- created wallet balance block, wallet item and kid line chart widgets.
- restructured onboarding, signup and device signup screens into layouts and main screens.
- updated signup and kid wallet screens to 17/11 design.
This commit is contained in:
2025-11-21 15:28:46 +01:00
parent 4225f7510b
commit 8201bff0a7
56 changed files with 1991 additions and 1491 deletions

View File

@@ -25,82 +25,65 @@ class ActivityListState extends ConsumerState<ActivityList> {
Widget build(BuildContext context) {
final theme = ref.watch(themePortProvider);
final colors = [
Colors.cyan,
Colors.pinkAccent,
Colors.deepOrangeAccent,
Colors.red,
];
final icons = {
"wage": Icons.wallet,
"goal": Icons.emoji_events_outlined,
"lock": Icons.lock_outline,
"reload": Icons.attach_money_outlined,
};
final titles = {
"wage": "Entrega de paga",
"goal": "¡Objetivo cumplido!",
"lock": "Bloqueo de pago",
"reload": "Recarga familiar",
};
final colors = [Colors.cyan, Colors.pinkAccent, Colors.deepOrangeAccent, Colors.red];
final icons = {"wage": Icons.wallet, "goal": Icons.emoji_events_outlined, "lock": Icons.lock_outline, "reload": Icons.attach_money_outlined};
final titles = {"wage": "Entrega de paga", "goal": "¡Objetivo cumplido!", "lock": "Bloqueo de pago", "reload": "Recarga familiar"};
return Column(
spacing: 20,
spacing: 32,
children: List<Widget>.generate(widget.activity.length, (int index) {
var logItem = Container(
padding: EdgeInsets.all(20),
padding: EdgeInsets.all(24),
decoration: BoxDecoration(
color: theme.getColorFor(ThemeCode.backgroundPrimary),
borderRadius: BorderRadius.all(Radius.circular(20)),
border: BoxBorder.fromLTRB(
left: BorderSide(color: colors[index % colors.length], width: 5),
),
borderRadius: BorderRadius.all(Radius.circular(24)),
border: BoxBorder.fromLTRB(left: BorderSide(
color: colors[index % colors.length], width: 8))
),
child: Column(
spacing: 15,
spacing: 24,
children: [
Row(
spacing: 8,
children: [
Icon(
icons[widget.activity[index]["type"]],
Icon(icons[widget.activity[index]["type"]],
color: colors[index % colors.length],
size: 20
),
Text(
titles[widget.activity[index]["type"]]!,
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
),
Spacer(),
Text("14/01/2005"),
],
Expanded(child: Text(titles[widget.activity[index]["type"]]!,
style: TextStyle(fontWeight: FontWeight.w500, fontSize: 18, letterSpacing: 0)
)),
Text("14/01/2005", style: TextStyle(fontSize: 14, letterSpacing: 0))
]
),
Align(
alignment: Alignment.topLeft,
child: Text("Ana ya tiene su paga de 5€ en el reloj"),
),
],
),
child: Text("Ana ya tiene su paga de 5€ en el reloj", style: TextStyle(fontSize: 14, letterSpacing: 0)),
)
]
)
);
if (widget.edit) {
return Row(
spacing: 10,
children: [
Checkbox(
value: values[index],
onChanged: (value) => {
setState(() {
values[index] = !values[index];
}),
},
})},
activeColor: theme.getColorFor(ThemeCode.buttonPrimary),
semanticLabel: "Eliminar",
semanticLabel: "Eliminar"
),
Expanded(child: logItem),
],
Expanded(child: logItem)
]
);
} else {
return logItem;
}
}),
})
);
}
}
}

View File

@@ -32,7 +32,7 @@ class ActivityScreen extends ConsumerWidget {
TextButton(onPressed: () => {}, child: Text("Mes")),
],
),
SizedBox(height: 200, child: LineGraph()),
LineGraph(),
ActivityList(activity: activity, edit: false),
];

View File

@@ -47,7 +47,11 @@ class AlertScreenState extends ConsumerState<AlertScreen> {
),
],
),
ActivityList(activity: activity, edit: edit),
Expanded(
child: SingleChildScrollView(
child: ActivityList(activity: activity, edit: edit)
)
)
],
),
),