যদিও অন্যান্য ব্যক্তি ইতিমধ্যে উল্লেখ করেছেন যে কীবোর্ড টাইপ "টেক্সটইনপুট টাইপ.মલ્ટিয়ালাইন" ব্যবহার করা যেতে পারে, আমি একটি টেক্সটফিল্ডটি আমার প্রয়োগটি যুক্ত করতে চেয়েছিলাম যা কোনও নতুন লাইন প্রবেশ করার পরে স্বয়ংক্রিয়ভাবে এর উচ্চতাটিকে অভিযোজিত করে, কারণ এটি প্রায়শই এর ইনপুট আচরণ অনুকরণ করতে পছন্দ করে? হোয়াটসঅ্যাপ এবং অনুরূপ অ্যাপস।
প্রতিবার পাঠ্য পরিবর্তিত হলে আমি এই উদ্দেশ্যে ইনপুটে '\ n' চ্যাটারের সংখ্যা বিশ্লেষণ করছি। এটি একটি ওভারকিল বলে মনে হচ্ছে, তবে দুর্ভাগ্যক্রমে আমি এখন পর্যন্ত ফ্লুটারে এই beahivour অর্জনের পক্ষে আরও ভাল সম্ভাবনা খুঁজে পাইনি এবং পুরানো স্মার্টফোনেও আমি কোনও পারফরম্যান্সের সমস্যা লক্ষ্য করিনি।
class _MyScreenState extends State<MyScreen> {
double _inputHeight = 50;
final TextEditingController _textEditingController = TextEditingController();
@override
void initState() {
super.initState();
_textEditingController.addListener(_checkInputHeight);
}
@override
void dispose() {
_textEditingController.dispose();
super.dispose();
}
void _checkInputHeight() async {
int count = _textEditingController.text.split('\n').length;
if (count == 0 && _inputHeight == 50.0) {
return;
}
if (count <= 5) {
var newHeight = count == 0 ? 50.0 : 28.0 + (count * 18.0);
setState(() {
_inputHeight = newHeight;
});
}
}
TextField(
controller: _textEditingController,
textInputAction: TextInputAction.newline,
keyboardType: TextInputType.multiline,
maxLines: null,
)
maxLines: null
। হাই ছাড়া এটি কাজ করে বলে মনে হচ্ছে না