feat(import): implement recipe import functionality with file and URL support
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -11,7 +11,10 @@ import '../domain/parsed_recipe.dart';
|
||||
enum _Step { input, review }
|
||||
|
||||
class CreateRecipeScreen extends ConsumerStatefulWidget {
|
||||
const CreateRecipeScreen({super.key});
|
||||
/// Optional markdown to pre-fill the input field, e.g. from import.
|
||||
final String? initialMarkdown;
|
||||
|
||||
const CreateRecipeScreen({super.key, this.initialMarkdown});
|
||||
|
||||
@override
|
||||
ConsumerState<CreateRecipeScreen> createState() =>
|
||||
@@ -22,10 +25,16 @@ class _CreateRecipeScreenState extends ConsumerState<CreateRecipeScreen> {
|
||||
_Step _step = _Step.input;
|
||||
|
||||
// Step 1 — markdown input
|
||||
final _markdownCtrl = TextEditingController();
|
||||
late final TextEditingController _markdownCtrl;
|
||||
bool _isParsing = false;
|
||||
String? _parseError;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_markdownCtrl = TextEditingController(text: widget.initialMarkdown ?? '');
|
||||
}
|
||||
|
||||
// Step 2 — review state
|
||||
ParsedRecipe? _parsed;
|
||||
late TextEditingController _nameCtrl;
|
||||
@@ -39,7 +48,7 @@ class _CreateRecipeScreenState extends ConsumerState<CreateRecipeScreen> {
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_markdownCtrl.dispose();
|
||||
_markdownCtrl.dispose(); // always non-null after initState
|
||||
if (_step == _Step.review) {
|
||||
_nameCtrl.dispose();
|
||||
_servingsCtrl.dispose();
|
||||
|
||||
Reference in New Issue
Block a user