Billing Stripe, link regia mobile e staff solo trasmissione.

Aggiunge fatturazione club, pagina regia condivisibile senza account, roster squadre e rimuove la modalità controller dall'app (v1.1.0).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-29 07:23:13 +02:00
parent 4083bc5dee
commit f4b7be0f80
156 changed files with 5033 additions and 2033 deletions

View File

@@ -16,7 +16,10 @@ class ScheduleMatchResult {
final String? location;
}
Future<ScheduleMatchResult?> showScheduleMatchSheet(BuildContext context) {
Future<ScheduleMatchResult?> showScheduleMatchSheet(
BuildContext context, {
String? teamName,
}) {
return showModalBottomSheet<ScheduleMatchResult>(
context: context,
isScrollControlled: true,
@@ -24,12 +27,14 @@ Future<ScheduleMatchResult?> showScheduleMatchSheet(BuildContext context) {
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
),
builder: (ctx) => const _ScheduleMatchSheet(),
builder: (ctx) => _ScheduleMatchSheet(teamName: teamName),
);
}
class _ScheduleMatchSheet extends StatefulWidget {
const _ScheduleMatchSheet();
const _ScheduleMatchSheet({this.teamName});
final String? teamName;
@override
State<_ScheduleMatchSheet> createState() => _ScheduleMatchSheetState();
@@ -123,6 +128,16 @@ class _ScheduleMatchSheetState extends State<_ScheduleMatchSheet> {
),
const SizedBox(height: 16),
Text('Programma partita', style: theme.textTheme.titleLarge),
if (widget.teamName != null && widget.teamName!.isNotEmpty) ...[
const SizedBox(height: 4),
Text(
widget.teamName!,
style: theme.textTheme.titleSmall?.copyWith(
color: AppTheme.primaryRed,
fontWeight: FontWeight.w600,
),
),
],
const SizedBox(height: 6),
Text(
'La diretta non parte ora: comparirà sul sito con data e ora. '