আমি কীভাবে কোনও পাঠ্য ক্ষেত্রে প্রাথমিক মান সরবরাহ করতে পারি?


142

আমি একটি পাঠ্য ক্ষেত্রে প্রাথমিক মান সরবরাহ করতে এবং পাঠ্যটি সাফ করার জন্য একটি খালি মান দিয়ে এটি পুনরায় আঁকতে চাই। ফ্লটারের এপিআইগুলির সাথে এটি করার সর্বোত্তম পন্থা কোনটি?

উত্তর:


105

(মেইলিং তালিকা থেকে। আমি এই উত্তরটি নিয়ে আসিনি।)

class _FooState extends State<Foo> {
  TextEditingController _controller;

  @override
  void initState() {
    super.initState();
    _controller = new TextEditingController(text: 'Initial value');
  }

  @override
  Widget build(BuildContext context) {
    return new Column(
      children: <Widget>[
        new TextField(
          // The TextField is first built, the controller has some initial text,
          // which the TextField shows. As the user edits, the text property of
          // the controller is updated.
          controller: _controller,
        ),
        new RaisedButton(
          onPressed: () {
            // You can also use the controller to manipuate what is shown in the
            // text field. For example, the clear() method removes all the text
            // from the text field.
            _controller.clear();
          },
          child: new Text('CLEAR'),
        ),
      ],
    );
  }
}

আমার ধারণা হিন্ট সার্ভার একই উদ্দেশ্য।
dhuma1981

3
আপনি অবাক হয়ে কোন মেলিং তালিকাটি উত্তরে উল্লেখ করেছেন?
stt106

2
এবং আমরা কীভাবে পাঠ্যক্ষেত্রের মানটিকে প্রাথমিক মান হিসাবে সংযোজন / ওভাররাইড করব?
stuckedoverflow

2
এছাড়াও, উইজেটের নিষ্পত্তি করার ক্ষেত্রে নিয়ন্ত্রণকারীকে নিষ্পত্তি করতে ভুলবেন না। এটি গুগল দ্বারা প্রস্তাবিত। এটি নিশ্চিত করে যে যখন প্রয়োজন হয় না তখন সম্পদগুলি মুক্ত হয়।
অমৃত পাল সিং

89

আপনি এর TextFormFieldপরিবর্তে একটি ব্যবহার করতে পারেন TextField, এবং initialValueসম্পত্তিটি ব্যবহার করতে পারেন । উদাহরণ স্বরূপ

TextFormField(initialValue: "I am smart")

2
কোনও কারণে আমি এটি একটি গতিশীল অবজেক্টের সাথে ব্যবহার করতে পারিনি। নিয়ামকের প্রয়োজনে শেষ হয়েছে।
এস 11 আর-ল্যাঞ্জেলোট

6
এটি কেবল তখনই বৈধ যখন কোনও পাঠকফর্মফিল্ডের সাথে কোনও নিয়ামক নির্দিষ্ট না করা হয়। docs.flutter.io/flutter/matory/TextFormField/…
অ্যালেক্স ফ্যালেনস্টেট

@ অ্যালেক্সফ্যালেনস্টটেড যখন কন্ট্রোলার উপলব্ধ থাকে তখন এই সম্পত্তিটির কোনও প্রয়োজন নেই
সামি কানাফানি

আমি মনে করি এটি ঝুঁকিপূর্ণ কারণ আপনার উইজেট গাছটি পুনর্নির্মাণের সময় আপনার পাঠ্যটি প্রাথমিক মানের সাথে প্রতিস্থাপন করা যেতে পারে।
গ্যাকবার্ক ইয়েসি

46

আপনাকে উইজেটের স্কোপে পৃথক ভেরিয়েবলের সংজ্ঞা দিতে হবে না, কেবল এটি ইনলাইন করুন:

TextField(
  controller: TextEditingController()..text = 'Your initial value',
  onChanged: (text) => {},
)

"TextEditingController () .. টেক্সট" এর দ্বৈত বিন্দু বলতে কী বোঝায়?
রায় লি

3
@ রায়লি একে ক্যাসকেড অপারেটর বলা হয়। তথ্য এবং উদাহরণ চেক এখানে stackoverflow.com/questions/53136945/...
vovahost

1
ধন্যবাদ !. অবজেক্টের তালিকা থেকে উইজেটগুলির গতিশীল গঠনের জন্য এটি নিখুঁত :)
davaus

এটাই আমি খুঁজছিলাম !! অনেক ধন্যবাদ!
তাইজং শিম

1
দুর্ভাগ্যক্রমে, @vovost এটি নিষ্পত্তি অংশটি অনুপস্থিত।
ক্রিস রটকোভস্কি

28

আপনি যদি ব্যবহার করছেন টেক্সটএডিটিংকন্ট্রোলার তবে নীচের মত এটিতে পাঠ্যটি সেট করুন

TextEditingController _controller = new TextEditingController();


_controller.text = 'your initial text';

final your_text_name = TextFormField(
      autofocus: false,
      controller: _controller,
      decoration: InputDecoration(
        hintText: 'Hint Value',
      ),
    );

এবং যদি আপনার কোন ব্যবহার করছেন না TextEditingController তারপর আপনি সরাসরি ব্যবহার করতে পারেন initialValue নিচের মত

final last_name = TextFormField(
      autofocus: false,
      initialValue: 'your initial text',
      decoration: InputDecoration(
        hintText: 'Last Name',
      ),
    );

আরও রেফারেন্সের জন্য TextEditingController


textসম্পত্তির ডক্স অনুসারে TextEditingController.textসম্পত্তিটির প্রাথমিক মান সেট করা ভাল ধারণা কিনা তা আমি নিশ্চিত নই: এটিকে সেট করা এই পাঠ্য সম্পাদনা নিয়ন্ত্রণকারী সমস্ত শ্রোতাকে তাদের আপডেট করতে হবে (এটি notifListeners বলে)। এই কারণে, এই মানটি কেবল ফ্রেমের মধ্যে সেট করা উচিত, যেমন ব্যবহারকারীর ক্রিয়াগুলির প্রতিক্রিয়া হিসাবে, বিল্ড, লেআউট বা পেইন্ট পর্যায়ের সময় নয়। ( api.flutter.dev/flutter/widgets/TextEditingController/text.html )
কিরিল

15

আমি এখানে এটি করার বিভিন্ন উপায় দেখেছি। তবে আমি মনে করি এটি অন্যান্য উত্তরের চেয়ে কিছুটা দক্ষ বা কমপক্ষে সংক্ষিপ্ত।

TextField(
   controller: TextEditingController(text: "Initial Text here"),
)

7

আপনি যদি TextInputগ্রহণযোগ্য উত্তরের মন্তব্যে @ এমআরটি দ্বারা জিজ্ঞাসিত একাধিক গুলি হ্যান্ডেল করতে চান তবে আপনি এমন একটি ফাংশন তৈরি করতে পারেন যা প্রাথমিক মান গ্রহণ করে এবং এর TextEditingControllerমতো ফেরত দেয় :

initialValue(val) {
  return TextEditingController(text: val);
}

তারপরে, এই ফাংশনটিকে নিয়ামক হিসাবে সেট করুন TextInputএবং এর প্রাথমিক মানটি এখানে সরবরাহ করুন:

controller: initialValue('Some initial value here....')

আপনি অন্য TextInputএর জন্য এটি পুনরাবৃত্তি করতে পারেন ।


4

এটি ব্যবহার করে অর্জন করা যেতে পারে TextEditingController

প্রাথমিক মান পেতে আপনি যুক্ত করতে পারেন

TextEditingController _controller = TextEditingController(text: 'initial value');

অথবা

আপনি ব্যবহার করে থাকেন TextFormFieldআপনি একটি আছে initialValueসম্পত্তি আছে। যা মূলত এটিকে initialValueস্বয়ংক্রিয়ভাবে নিয়ামককে সরবরাহ করে।

TextEditingController _controller = TextEditingController();
TextFormField(
  controller: _controller,
  initialValue: 'initial value'
)

পাঠ্য সাফ করার জন্য আপনি _controller.clear()পদ্ধতিটি ব্যবহার করতে পারেন ।


3

শ্রেণীর ভিতরে,

  final usernameController = TextEditingController(text: 'bhanuka');

টেক্সট ক্ষেত্রের,

   child: new TextField(
        controller: usernameController,
    ...
)


-12

যদি আপনি InputDecorationএইটির জন্য এবং এখানে যারা উত্তর খুঁজছেন তাদের উত্তর খুঁজে না পেয়েছেন: ক্ষেত্রের ইঙ্গিতটি পরীক্ষা করুন:

new TextField(
  decoration: new InputDecoration(
    hintText:"My Text String."
  ),
...

ইঙ্গিত পাঠ্য প্রাথমিক মান নয়। যখন ব্যবহারকারী কিছু টাইপ করে এটি চলে যাবে। প্রাথমিক পাঠ্যটি ব্যবহারকারীর জন্য প্রাক-লেখার মতো কিছু।
আরমান আরদোখানি

এটি হিন্টস পাঠ্য, মান সূচনা নয়
এমআরটি

2
এটি সত্য, তবে যারা এখানে ইঙ্গিত পাঠ্যের জন্য সন্ধান করেন তাদের পক্ষে এটি ভাল, তবে কী বলবেন তা জানেন না।
থিঙ্কডিজিটাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.