flutter_media_picker/lib/src/inputs/input_text.dart

71 lines
1.8 KiB
Dart
Raw Normal View History

2022-11-01 08:23:06 +01:00
// SPDX-FileCopyrightText: 2022 Iconica
//
// SPDX-License-Identifier: BSD-3-Clause
2022-10-25 14:20:18 +02:00
import 'package:flutter/material.dart';
import 'package:flutter_form_wizard/flutter_form.dart';
2022-10-25 14:20:18 +02:00
import 'package:flutter_media_picker/src/abstracts/media_picker_input.dart';
import 'package:flutter_media_picker/src/media_result.dart';
/// Input for text used by [MediaPicker].
class MediaPickerInputText implements MediaPickerInput {
2024-02-26 10:50:11 +01:00
/// Label for the text input.
@override
String label;
/// Widget for the text input.
@override
Widget? widget;
/// Map for checking page settings.
@override
Map<String, dynamic>? checkPageSettings;
/// Callback function when the input is completed.
@override
void Function(MediaResult value)? onComplete;
/// Constructor for [MediaPickerInputText].
2022-10-25 14:20:18 +02:00
MediaPickerInputText({
2022-12-23 15:10:01 +01:00
this.label = 'Text',
this.widget,
2022-10-25 14:20:18 +02:00
this.checkPageSettings,
this.onComplete,
});
2022-10-25 14:20:18 +02:00
2024-02-26 10:50:11 +01:00
/// Method to handle button press for picking text.
2022-10-25 14:20:18 +02:00
@override
Future<MediaResult> onPressed(BuildContext context) async {
2023-01-04 14:35:36 +01:00
return MediaResult(mimeType: 'plain/text');
2022-10-25 14:20:18 +02:00
}
2024-02-26 10:50:11 +01:00
/// Method to display the result of picking text.
2022-10-25 14:20:18 +02:00
@override
Future<Widget> displayResult(MediaResult result) async {
return const DisplayText();
}
}
2024-02-26 10:50:11 +01:00
/// Widget to display text input.
class DisplayText extends StatefulWidget {
2022-10-25 14:20:18 +02:00
const DisplayText({Key? key}) : super(key: key);
@override
State<StatefulWidget> createState() => _DisplayTextState();
2022-10-25 14:20:18 +02:00
}
class _DisplayTextState extends State<DisplayText> {
2022-10-25 14:20:18 +02:00
final FlutterFormInputController<String> _controller =
FlutterFormInputPlainTextController(
id: 'title',
);
@override
Widget build(BuildContext context) {
return FlutterFormInputPlainText(
2023-01-04 14:35:36 +01:00
label: const Text('Title'),
2022-10-25 14:20:18 +02:00
controller: _controller,
);
}
}