Add M3U sources persistence UI and provider; integrate saved sources into HomeScreen

This commit is contained in:
2026-01-11 19:57:20 +09:00
parent 9cf16ce279
commit ad7081b342
4 changed files with 106 additions and 34 deletions

View File

@@ -389,39 +389,45 @@ class _PlayerScreenState extends State<PlayerScreen> {
])))),
if (_playError)
Positioned.fill(
child: Container(
color: Colors.black54,
child: Center(
child: Card(
color: Colors.red.shade900,
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(_errorMessage ?? 'Playback failed',
style: const TextStyle(
color: Colors.white,
fontSize: 16)),
const SizedBox(height: 12),
Row(
mainAxisSize: MainAxisSize.min,
children: [
TextButton(
onPressed: _retryPlay,
child: const Text('Retry',
style: TextStyle(
color:
Colors.white))),
const SizedBox(width: 8),
TextButton(
onPressed: _inspectStream,
child: const Text('Inspect',
style: TextStyle(
color:
Colors.white)))
])
]))))),
child: Container(
color: Colors.black54,
child: Center(
child: Card(
color: Colors.red.shade900,
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(_errorMessage ?? 'Playback failed',
style: const TextStyle(
color: Colors.white, fontSize: 16)),
const SizedBox(height: 12),
Row(
mainAxisSize: MainAxisSize.min,
children: [
TextButton(
onPressed: _retryPlay,
child: const Text('Retry',
style:
TextStyle(color: Colors.white)),
),
const SizedBox(width: 8),
TextButton(
onPressed: _inspectStream,
child: const Text('Inspect',
style:
TextStyle(color: Colors.white)),
),
],
),
],
),
),
),
),
),
),
AnimatedOpacity(
opacity: _showControls ? 1.0 : 0.0,
duration: const Duration(milliseconds: 300),