Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
// lib/widgets/ai_content_disclaimer.dart | |
import 'package:flutter/material.dart'; | |
import 'package:google_fonts/google_fonts.dart'; | |
import '../theme/colors.dart'; | |
class AiContentDisclaimer extends StatelessWidget { | |
final bool isInteractive; | |
final bool compact; | |
const AiContentDisclaimer({ | |
super.key, | |
this.isInteractive = false, | |
this.compact = false, | |
}); | |
Widget build(BuildContext context) { | |
if (compact) { | |
return _buildCompactDisclaimer(context); | |
} | |
return _buildFullDisclaimer(context); | |
} | |
Widget _buildCompactDisclaimer(BuildContext context) { | |
return Container( | |
width: double.infinity, | |
height: double.infinity, | |
color: const Color(0xFF047857), // emerald-700 | |
child: Center( | |
child: LayoutBuilder( | |
builder: (context, constraints) { | |
final baseSize = constraints.maxWidth / 20; | |
final iconSize = baseSize * 1.5; | |
return Column( | |
mainAxisAlignment: MainAxisAlignment.center, | |
children: [ | |
Icon( | |
Icons.smart_toy_outlined, | |
color: Colors.white, | |
size: iconSize, | |
), | |
const SizedBox(height: 8), | |
Text( | |
'AI Content', | |
style: GoogleFonts.arimo( | |
fontSize: baseSize, | |
color: Colors.white, | |
fontWeight: FontWeight.w700, | |
letterSpacing: 1.0, | |
shadows: const [ | |
Shadow( | |
offset: Offset(0, 1), | |
blurRadius: 2.0, | |
color: Color.fromRGBO(0, 0, 0, 0.3), | |
), | |
], | |
), | |
), | |
], | |
); | |
}, | |
), | |
), | |
); | |
} | |
Widget _buildFullDisclaimer(BuildContext context) { | |
return Container( | |
width: double.infinity, | |
height: double.infinity, | |
color: const Color(0xFF047857), // emerald-700 | |
child: Center( | |
child: LayoutBuilder( | |
builder: (context, constraints) { | |
// Scale text based on container width | |
final baseSize = constraints.maxWidth / 40; | |
final smallTextSize = baseSize * 0.7; | |
final mediumTextSize = baseSize; | |
final largeTextSize = baseSize * 1.1; | |
return Padding( | |
padding: const EdgeInsets.all(16.0), | |
child: Column( | |
mainAxisAlignment: MainAxisAlignment.center, | |
children: [ | |
Row( | |
mainAxisAlignment: MainAxisAlignment.center, | |
crossAxisAlignment: CrossAxisAlignment.baseline, | |
textBaseline: TextBaseline.alphabetic, | |
children: [ | |
Text( | |
'The following ', | |
style: GoogleFonts.arimo( | |
fontSize: smallTextSize, | |
color: Colors.white, | |
fontWeight: FontWeight.w500, | |
letterSpacing: 1.2, | |
height: 1.0, | |
shadows: const [ | |
Shadow( | |
offset: Offset(0, 2), | |
blurRadius: 3.0, | |
color: Color.fromRGBO(0, 0, 0, 0.3), | |
), | |
], | |
), | |
), | |
Text( | |
'footage', | |
style: GoogleFonts.arimo( | |
fontSize: mediumTextSize, | |
color: Colors.white, | |
fontWeight: FontWeight.w700, | |
letterSpacing: 1.2, | |
height: 1.0, | |
shadows: const [ | |
Shadow( | |
offset: Offset(0, 2), | |
blurRadius: 3.0, | |
color: Color.fromRGBO(0, 0, 0, 0.3), | |
), | |
], | |
), | |
), | |
Text( | |
isInteractive ? ' will be ' : ' has been ', | |
style: GoogleFonts.arimo( | |
fontSize: smallTextSize, | |
color: Colors.white, | |
fontWeight: FontWeight.w500, | |
letterSpacing: 1.2, | |
height: 1.0, | |
shadows: const [ | |
Shadow( | |
offset: Offset(0, 2), | |
blurRadius: 3.0, | |
color: Color.fromRGBO(0, 0, 0, 0.3), | |
), | |
], | |
), | |
), | |
Text( | |
'synthesized', | |
style: GoogleFonts.arimo( | |
fontSize: mediumTextSize, | |
color: Colors.white, | |
fontWeight: FontWeight.w700, | |
letterSpacing: 1.2, | |
height: 1.0, | |
shadows: const [ | |
Shadow( | |
offset: Offset(0, 2), | |
blurRadius: 3.0, | |
color: Color.fromRGBO(0, 0, 0, 0.3), | |
), | |
], | |
), | |
), | |
], | |
), | |
const SizedBox(height: 18), | |
Row( | |
mainAxisAlignment: MainAxisAlignment.center, | |
crossAxisAlignment: CrossAxisAlignment.baseline, | |
textBaseline: TextBaseline.alphabetic, | |
children: [ | |
Text( | |
'on the fly using a', | |
style: GoogleFonts.arimo( | |
fontSize: smallTextSize, | |
color: Colors.white, | |
fontWeight: FontWeight.w500, | |
letterSpacing: 1.2, | |
height: 1.0, | |
shadows: const [ | |
Shadow( | |
offset: Offset(0, 2), | |
blurRadius: 3.0, | |
color: Color.fromRGBO(0, 0, 0, 0.3), | |
), | |
], | |
), | |
), | |
], | |
), | |
const SizedBox(height: 18), | |
Text( | |
'distilled video model', | |
style: GoogleFonts.arimo( | |
fontSize: largeTextSize, | |
color: Colors.white, | |
fontWeight: FontWeight.w700, | |
letterSpacing: 1.2, | |
height: 1.0, | |
shadows: const [ | |
Shadow( | |
offset: Offset(0, 2), | |
blurRadius: 3.0, | |
color: Color.fromRGBO(0, 0, 0, 0.3), | |
), | |
], | |
), | |
), | |
const SizedBox(height: 18), | |
Text( | |
'and may contains visual glitches or hallucinations.', | |
style: GoogleFonts.arimo( | |
fontSize: smallTextSize, | |
color: Colors.white, | |
fontWeight: FontWeight.w500, | |
letterSpacing: 1.2, | |
height: 1.0, | |
shadows: const [ | |
Shadow( | |
offset: Offset(0, 2), | |
blurRadius: 3.0, | |
color: Color.fromRGBO(0, 0, 0, 0.3), | |
), | |
], | |
), | |
textAlign: TextAlign.center, | |
), | |
], | |
), | |
); | |
}, | |
), | |
), | |
); | |
} | |
} |