স্টেটফুল উইজেটে ডেটা পাঠানো এবং এলোমেলো অবস্থায় তার রাজ্যে এটি অ্যাক্সেস করা


124

আমার ফ্লাটার অ্যাপে আমার 2 টি স্ক্রিন রয়েছে: রেকর্ড তৈরি এবং সম্পাদনা করার জন্য রেকর্ড এবং পর্দার তালিকা।

যদি আমি দ্বিতীয় স্ক্রিনে অবজেক্টটি পাস করি যার অর্থ আমি এটি সম্পাদনা করতে যাচ্ছি এবং আমি যদি নাল পাস করি তবে এর অর্থ হ'ল আমি নতুন আইটেম তৈরি করছি। সম্পাদনা স্ক্রিনটি স্টেটফুল উইজেট এবং আমার মামলার জন্য এই পদ্ধতির https://flutter.io/cookbook/navication/passing-data/ কীভাবে ব্যবহার করবেন তা আমি নিশ্চিত নই ।

class RecordPage extends StatefulWidget {
  final Record recordObject;

  RecordPage({Key key, @required this.recordObject}) : super(key: key);

  @override
  _RecordPageState createState() => new _RecordPageState();
}

class _RecordPageState extends State<RecordPage> {
  @override
  Widget build(BuildContext context) {
   //.....
  }
}

আমি কিভাবে অ্যাক্সেস করতে পারেন recordObject ভিতরে _RecordPageState ?



_RecordPageState বর্গের কোন কার্যে আমরা কীভাবে 'রেকর্ডঅবজেক্ট' পরিবর্তনশীল মানটি ব্যবহার করতে পারি?
কমলেশ

এটা কি তোমার প্রশ্নের উত্তর?
কনস্ট্রাক্টর

উত্তর:


208

_ রেকর্ডপেজ স্টেটে রেকর্ডঅবজেক্টটি ব্যবহার করতে, আপনাকে কেবল নীচের মত উইজেট.অবজেক্টনাম লিখতে হবে

class _RecordPageState extends State<RecordPage> {
  @override
  Widget build(BuildContext context) {
   .....
   widget.recordObject
   .....
  }
}

9
যারা ঝাঁকুনিতে নতুন, তারা '@ ওভাররাইড রেকর্ডপেজ উইজেট => সুপার.উইজেট' এর মতো উইজেট সংজ্ঞা দিতে ভুলবেন না;
এইচএইচকে

22
@hhk কেন এটি প্রয়োজনীয়?
হেরোহতার

2
ক্লাসের recordObjectঅংশ হওয়া উচিত নয় State? যৌক্তিকভাবে, এটি হচ্ছেStatefulWidget থাকা ভুল (সংহতির ক্ষেত্রে)। তদ্ব্যতীত, সমস্ত ক্ষেত্র StatefulWidgetঅপরিবর্তনীয় হওয়া উচিত - আপনি যদি recordObjectরেফারেন্স পরিবর্তন করতে চান ?
অ্যালেক্স Semeniuk

আমার ঠিক একই রকম এবং এটি কিছু করার মতো কাজ করে না Text(widget.recordObject), এটি বলে যে আমার ভারী শূন্য
দানি

_RecordPageState বর্গের কোন কার্যে আমরা কীভাবে 'রেকর্ডঅবজেক্ট' পরিবর্তনশীল মানটি ব্যবহার করতে পারি?
কমলেশ

32
class RecordPage extends StatefulWidget {
  final Record recordObject;

  RecordPage({Key key, @required this.recordObject}) : super(key: key);

  @override
  _RecordPageState createState() => new _RecordPageState(recordObject);
}

class _RecordPageState extends State<RecordPage> {
  Record  recordObject
 _RecordPageState(this. recordObject);  //constructor
  @override
  Widget build(BuildContext context) {.    //closure has access
   //.....
  }
}

1
কেন এটি স্টেটফুল উইজেট তা দয়া করে ব্যাখ্যা করুন।
লোকালহোস্ট

ওটিলকান কারণ ওপি প্রাথমিক স্ক্রিপ্টটি স্টেটফুল উইজেট, তিনি প্রয়োজন অনুসারে কিছু লাইন যুক্ত করেছেন।
অ্যাডিয়েশন

3
আমি মনে করি না যে ক্লাস এবং ক্লাস recordObjectউভয় ক্ষেত্রেই এমন একটি ভাল ধারণা (যদিও আমি টিউটোরিয়ালগুলি ঠিক এটি করতে দেখেছি)। শ্রেণীর ক্ষেত্র ব্যবহার করে ক্ষেত্রগুলি অ্যাক্সেস করার পদ্ধতিকে আরও সঠিক পদ্ধতির মতো মনে হয় (যদিও এটির নিজস্ব সমস্যা রয়েছে)StateStatefulWidgetStatefulWidgetwidgetState
অ্যালেক্স সেমেনিয়ুক

21

সম্পূর্ণ উদাহরণ

এটির কনস্ট্রাক্টর ব্যবহার করে আপনাকে পরামিতিগুলি স্টেটে পাস করতে হবে না। আপনি উইজেট.মাইফিল্ড ব্যবহার করে এগুলি সহজেই অ্যাক্সেস করতে পারেন ।

class MyRecord extends StatefulWidget {
  final String recordName;
  const MyRecord(this.recordName);

  @override
  MyRecordState createState() => MyRecordState();
}

class MyRecordState extends State<MyRecord> {
  @override
  Widget build(BuildContext context) {
    return Text(widget.recordName); // Here you direct access using widget
  }
}

আপনি যখন স্ক্রিন নেভিগেট করবেন তখন আপনার ডেটা পাস করুন:

 Navigator.of(context).push(MaterialPageRoute(builder: (context) => MyRecord("WonderWorld")));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.