打开 Flutter currency_text_input_formatter showModalBottomSheet 时货币未更新

Currency is not updated when Flutter currency_text_input_formatter showModalBottomSheet is opened

我正在尝试制作一个 TextFormField 以使用 currency_text_input_formatter 包输入金钱。我把它放在 showModalBottomSheet.

这是我打开 showModalBottomSheet 时发生的情况:

当您使用键盘进行更改时:

如您所见,这次TRY货币的图标到了。当我打开 showModalBottomSheet 时,我希望显示 TRY 货币图标。我需要在键盘上进行更改才能显示实际货币 TRY。当 showModalBottomSheet 打开时,我希望它能正确显示 (TRY) 图标。

我该如何解决这个问题?

textFormField 代码:

TextFormField(
  style: TextStyle(fontSize: 19),
  decoration: InputDecoration(
    border: OutlineInputBorder(),
  ),
  initialValue: _fiyat.format(snapshot.data!.docs[index].data()["urunFiyati"]),
  inputFormatters: <TextInputFormatter>[
    CurrencyTextInputFormatter(
      locale: 'tr_TR',
      decimalDigits: 2,
      symbol: '₺',
    ),
  ],
  keyboardType: TextInputType.number,
),

在此先感谢您的帮助:)

尝试在构建之前初始化 CurrencyTextInputFormatter(BuildContext 上下文)。UPD:代码已更新,因此也使用了 showModalBottomSheet

import 'package:flutter/material.dart';
import 'package:currency_text_input_formatter/currency_text_input_formatter.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return  MaterialApp(home: HomePage());
  }
}

class HomePage extends StatelessWidget {
   HomePage({Key? key}) : super(key: key);
  final CurrencyTextInputFormatter _formatter = CurrencyTextInputFormatter(
    locale: 'tr_TR',
    decimalDigits: 2,
    symbol: '₺',
  );

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: ElevatedButton(
          child: const Text('showModalBottomSheet'),
          onPressed: () {
            showModalBottomSheet<void>(
              context: context,
              builder: (BuildContext context) {
                return Container(
                  height: 200,
                  color: Colors.grey[100],
                  child: Center(
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      mainAxisSize: MainAxisSize.min,
                      children: <Widget>[
                        Padding(
                          padding: const EdgeInsets.symmetric(horizontal: 30,vertical: 10),
                          child: TextFormField(
                            initialValue: _formatter.format('2000'),
                            inputFormatters: <TextInputFormatter>[_formatter],
                            keyboardType: TextInputType.number,
                          ),
                        ),
                        const Text('Modal BottomSheet'),
                        ElevatedButton(
                          child: const Text('Close BottomSheet'),
                          onPressed: () => Navigator.pop(context),
                        )
                      ],
                    ),
                  ),
                );
              },
            );
          },
        ),
      )
    );
  }
}