Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 1,852 Bytes
5acd9c3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
// lib/widgets/api_key_dialog.dart
import 'package:flutter/material.dart';
import '../theme/colors.dart';
class ApiKeyDialog extends StatefulWidget {
const ApiKeyDialog({super.key});
@override
State<ApiKeyDialog> createState() => _ApiKeyDialogState();
}
class _ApiKeyDialogState extends State<ApiKeyDialog> {
final _controller = TextEditingController();
bool _obscureText = true;
@override
Widget build(BuildContext context) {
return AlertDialog(
title: const Text(
'Enter HuggingFace API Key',
style: TextStyle(
color: AiTubeColors.onBackground,
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
content: TextField(
controller: _controller,
obscureText: _obscureText,
decoration: InputDecoration(
labelText: 'API Key',
labelStyle: const TextStyle(color: AiTubeColors.onSurfaceVariant),
suffixIcon: IconButton(
icon: Icon(
_obscureText ? Icons.visibility : Icons.visibility_off,
color: AiTubeColors.onSurfaceVariant,
),
onPressed: () => setState(() => _obscureText = !_obscureText),
),
),
),
backgroundColor: AiTubeColors.surface,
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: const Text(
'Cancel',
style: TextStyle(color: AiTubeColors.onSurfaceVariant),
),
),
FilledButton(
onPressed: () => Navigator.pop(context, _controller.text),
style: FilledButton.styleFrom(
backgroundColor: AiTubeColors.primary,
),
child: const Text('Save'),
),
],
);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
} |