Как сохранить состояние var с помощью getX во флаттере?
Снимок экрана:страница распознавания текста
Текст, обнаруженный на изображении, сохраняется в «var resultTxt», как я могу сохранить состояние всех строк, обнаруженных моделью ML, и использовать его на другой странице?
Код распознавания текста:
doTextRecog() async {
resultTxt = '';
final FirebaseVisionImage visionImage =
FirebaseVisionImage.fromFile(_selectedFile);
final VisionText visionText =
await textRecognizer.processImage(visionImage);
for (TextBlock block in visionText.blocks) {
for (TextLine line in block.lines) {
resultTxt += line.text + '\n';
}
}
setState(() {
resultTxt;
print(resultTxt);
});
// textRecognizer.close();
}
Я уже использую контроллер getX для пути к изображению, но не знаю, как сохранить переменную с несколькими строками текста и использовать ее на другой странице. Код контроллера:
class PollImageController extends GetxController {
RxString imageDisplay = ''.obs;
@override
void onInit() {
super.onInit();
}
void setImage(String image) {
imageDisplay.value = image;
}
@override
void onClose() {
super.onClose();
}
}
2 ответа
Вы можете использовать
GetxService
для обмена данными в вашем приложении.
class SharedData extends GetxService {
static SharedData get to => Get.find();
final sharedText = ''.obs;
@override
void onInit() {
super.onInit();
}
@override
void onClose() {
super.onClose();
}
}
doTextRecog() async {
resultTxt = '';
final FirebaseVisionImage visionImage =
FirebaseVisionImage.fromFile(_selectedFile);
final VisionText visionText =
await textRecognizer.processImage(visionImage);
for (TextBlock block in visionText.blocks) {
for (TextLine line in block.lines) {
resultTxt += line.text + '\n';
}
}
// assign value
SharedData.to.sharedText.value = resultTxt;
}
Вы также можете просто обрабатывать все свои функции распознавания текста в специальном
GetxController
учебный класс.
Тогда вы могли бы позвонить
doTextRecog()
и получить доступ к обновленным
RxString resultTxt
ценность из любого места.
class TextRecognitionController extends GetxController {
RxString resultTxt = ''.obs;
doTextRecog() async {
final FirebaseVisionImage visionImage =
FirebaseVisionImage.fromFile(_selectedFile);
final VisionText visionText =
await textRecognizer.processImage(visionImage);
for (TextBlock block in visionText.blocks) {
for (TextLine line in block.lines) {
resultTxt.value += line.text + '\n';
}
}
print(resultTxt.value);
// textRecognizer.close();
}
}