বিড়বিড় করে মাল্টি-লাইন টেক্সটফিল্ড


118

এটি সহজ শোনায় তবে আমরা কীভাবে ঝড়বিলায় একটি বহু-লাইন সম্পাদনযোগ্য পাঠ্যক্ষেত্র করতে পারি? টেক্সটফিল্ড কেবল একটি একক লাইন নিয়ে কাজ করে।

সম্পাদনা করুন: কিছু স্পষ্টতা যেমন মনে হচ্ছে এটি পরিষ্কার নয়। আপনি যখন পাঠ্য সামগ্রীটি কার্যত মোড়ানোর জন্য মাল্টলাইন সেট করতে পারেন, এটি এখনও মাল্টিলাইন নয়। এটি একক লাইন একাধিক লাইনে প্রদর্শিত হয়। আপনি যদি এই জাতীয় কিছু করতে চান তবে আপনি পারবেন না। কারণ আপনার ENTERবোতামে অ্যাক্সেস নেই । এবং কোনও এন্টার বোতামের অর্থ কোনও মাল্টলাইন নেই।

উত্তর:


204

স্বয়ংক্রিয় মোড়ক ব্যবহার করতে, কেবল এই maxLinesহিসাবে সেট করুন null:

TextField(
  keyboardType: TextInputType.multiline,
  maxLines: null,
)

যদি maxLinesসম্পত্তি null, সেখানে লাইন নম্বরে কোন সীমা, এবং মোড়ানো সক্রিয় করা হয়।


ধরা আছে maxLines: null। হাই ছাড়া এটি কাজ করে বলে মনে হচ্ছে না
সিসির

26

যদি আপনি চান যে আপনার টেক্সটফিল্ডটি ব্যবহারকারী ইনপুটটির সাথে মানিয়ে নিতে পারে তবে এটি করুন:

TextField(
    keyboardType: TextInputType.multiline,
    minLines: 1,//Normal textInputField will be displayed
    maxLines: 5,// when user presses enter it will adapt to it
    );

এখানে আপনি যা চান সর্বাধিক লাইন সেট করুন এবং আপনি যেতে ভাল। আমার মতে মাইলসলাইনগুলি নালায় সেট করা ভাল পছন্দ নয় আমাদের এটিকে কিছুটা মান নির্ধারণ করা উচিত।


4
আমি উইজেটের নাম সংশোধন করেছি: টেক্সটইনপুটফিল্ড থেকে: টেক্সটফিল্ড। বিড়বিড় করে পাঠ্য ইনপুটফিল্ড নেই, কেবল টেক্সটফিল্ড বা টেক্সটফর্মফিল্ড। যদি না আপনি কাস্টম নামের সাথে একটি তৈরি করেন।
ক্যাসিও সেফরিন

14

যদিও অন্যান্য ব্যক্তি ইতিমধ্যে উল্লেখ করেছেন যে কীবোর্ড টাইপ "টেক্সটইনপুট টাইপ.মલ્ટিয়ালাইন" ব্যবহার করা যেতে পারে, আমি একটি টেক্সটফিল্ডটি আমার প্রয়োগটি যুক্ত করতে চেয়েছিলাম যা কোনও নতুন লাইন প্রবেশ করার পরে স্বয়ংক্রিয়ভাবে এর উচ্চতাটিকে অভিযোজিত করে, কারণ এটি প্রায়শই এর ইনপুট আচরণ অনুকরণ করতে পছন্দ করে? হোয়াটসঅ্যাপ এবং অনুরূপ অ্যাপস।

প্রতিবার পাঠ্য পরিবর্তিত হলে আমি এই উদ্দেশ্যে ইনপুটে '\ 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) {  // use a maximum height of 6 rows 
    // height values can be adapted based on the font size
      var newHeight = count == 0 ? 50.0 : 28.0 + (count * 18.0);
      setState(() {
        _inputHeight = newHeight;
      });
    }
  }


  // ... build method here
  TextField(
    controller: _textEditingController,
    textInputAction: TextInputAction.newline,
    keyboardType: TextInputType.multiline,
    maxLines: null,
  )

4
ইনপুটটির উচ্চতা নির্ধারণ করতে আপনি কীভাবে ইনপুটহাইটটি ব্যবহার করবেন তা যুক্ত করার বিষয়ে বিবেচনা করুন
আলী নাসেরজাদেহ ২

যেহেতু টেক্সটফিল্ড 'count n' এর সাথে লাইনটি বিভক্ত না করেই লাইনটি মোড়ানো করতে পারে ব্যর্থ হবে। সুতরাং আমি এই কোড সহ পাঠ্য রেখাগুলি গণনা করছি: int গণনা = (_textEditingController.text.length / / MediaQuery.of (প্রসঙ্গ) .size.width * 0.06)) কাছাকাছি ();
রেজিনাল্ডো রিগো


5

TextFieldহয়েছে maxLines সম্পত্তি।

এখানে চিত্র বর্ণনা লিখুন


4
আমি জানি। এটি সামগ্রীতে আবৃত হওয়ার সময়, আপনি এখনও একটি নতুন লাইন তৈরি করতে ম্যানুয়ালি টিপতে পারবেন না। কমপক্ষে অ্যান্ড্রয়েডে, কারণ আপনার প্রবেশ বোতামে অ্যাক্সেস নেই।
রামি রুসলেট

আহ, আমি এই সমস্যাটি মিস করেছি। আমি ২০১ similar সাল থেকে একই ধরণের সমস্যাটি দেখেছি, তাই আমি ধরে নিয়েছি এটি সমাধান হয়ে গেছে। অত্যন্ত দুঃখজনক আমরা এখনও এটি করতে পারি না।
রুমি রসসলেট

4
দেখে মনে হচ্ছে এটি এখন ঠিক হয়ে গেছে ( github.com/flutter/flutter/issues/8028 )। আমি আইওএস এবং অ্যান্ড্রয়েড উভয় ক্ষেত্রেই বহু-লাইন চেষ্টা করেছি এবং উভয়ই এখন পাঠ্য ক্ষেত্রে নতুন লাইন তৈরি করতে পারে।
ম্যাট এস

এটি আসলে এখন একটি নতুন লাইন তৈরি করতে পারে, তবে অবশ্যই দুবার এন্টার কী টিপতে হবে!
ভেন্ডু

5

ব্যবহারের expandsএবং আপনি দিতে প্রয়োজন হবে না minLinesবা maxLinesকোন নির্দিষ্ট মান:

TextField(
  maxLines: null,
  expands: true, 
  keyboardType: TextInputType.multiline,
)


0

অফিসিয়াল ডকটি বলেছে : maxLinesলাইনের সংখ্যার উপরের বিধিনিষেধটি সরিয়ে দিতে সম্পত্তিটি বাতিল হয়ে যাবে। গতানুগতিক এটি এক, অর্থ এটি একটি একক-লাইন পাঠ্য ক্ষেত্র।

দ্রষ্টব্য: maxLines অবশ্যই শূন্য নয়।


0

যদি উপরে একবার আপনার জন্য কাজ না করে তবে অ্যাড করার চেষ্টা করুন minLines এছাড়াও

TextField(
        keyboardType: TextInputType.multiline,
        minLines: 3,
        maxLines: null);

0

জন্য TextFormField উইজেট , আপনি minLines এবং maxLines আপনি লাইনের সেট ফিক্স সংখ্যা করতে চান সেট করতে পারেন। অন্যথায় আপনি ম্যাক্সলাইনগুলিও নালায় সেট করতে পারেন।

TextFormField(
      minLines: 5,
      maxLines: 7,
      decoration: InputDecoration(
          hintText: 'Address',
          border: OutlineInputBorder(
              borderRadius: BorderRadius.all(Radius.circular(10.0)),
          ),
      ),
),
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.