ফ্লটারে কিছুটা বিলম্বের পরে কীভাবে কোড চালাবেন?


112

আমি আমার উইজেটটি তৈরির পরে একটি নির্দিষ্ট বিলম্বের পরে একটি ফাংশন সম্পাদন করতে চাই। এলোমেলোভাবে এটি করার অদ্ভুত উপায় কি?

আমি কী অর্জন করতে চাইছি: আমি একটি ডিফল্ট FlutterLogoউইজেট দিয়ে শুরু করতে চাই এবং তারপরে styleকিছু সময়ের পরে এর সম্পত্তিটি পরিবর্তন করতে চাই ।

উত্তর:


210

আপনি Future.delayedকিছু সময় পরে আপনার কোড চালানোর জন্য ব্যবহার করতে পারেন । যেমন:

Future.delayed(const Duration(milliseconds: 500), () {

// Here you can write your code

  setState(() {
    // Here you can write your code for open new view
  });

});

সেটস্টেট ফাংশনে আপনি অ্যাপ্লিকেশন ইউআই সম্পর্কিত যেমন একটি কোড লিখতে পারেন যেমন পর্দার ডেটা রিফ্রেশ করুন, লেবেলের পাঠ্য পরিবর্তন করুন ইত্যাদি etc.


66

এটি নির্ধারণ 😎

class AnimatedFlutterLogo extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => new _AnimatedFlutterLogoState();
}

class _AnimatedFlutterLogoState extends State<AnimatedFlutterLogo> {
  Timer _timer;
  FlutterLogoStyle _logoStyle = FlutterLogoStyle.markOnly;

  _AnimatedFlutterLogoState() {
    _timer = new Timer(const Duration(milliseconds: 400), () {
      setState(() {
        _logoStyle = FlutterLogoStyle.horizontal;
      });
    });
  }

  @override
  void dispose() {
    super.dispose();
    _timer.cancel();
  }

  @override
  Widget build(BuildContext context) {
    return new FlutterLogo(
      size: 200.0,
      textColor: Palette.white,
      style: _logoStyle,
    );
  }
}

4
আপনি কোথা Timerথেকে আমদানি করলেন ?
Lucem

4
এটি পেয়েছেimport 'dart:async'
Lucem

এক পরিমার্জন করা হবে timer = ...initStateঅগ্রাহ্য করে। এইভাবে, আপনার কাছে অ্যাক্সেস রয়েছে widgetযা State<>কনস্ট্রাক্টরে সেট করা আছে ।
স্টিভেনস্পিল

আমি মনে করি না যে এটির উত্তর গ্রহণ করা উচিত, কারণ এটি কেবল বিলম্বের পরে কোড চালায় না, কোডটিও পুনরাবৃত্তি করে। @ রাহুল শর্মা সমাধানের জন্য বিলম্বের জন্য সমাধান আরও ভাল।
অ্যান্ডিস

রাহুলের উত্তরটি টাইমার বাতিল করে না, তাই যদি আপনার উইজেটটি চলে যায় তবে আপনার ফুটো আছে? (দ্রষ্টব্য: আমি কোনও ঝাঁকুনির বিকাশকারী নই, আমি কয়েক বছর আগে এটি একবার ব্যবহার করেছি!)
ব্র্যাডলি ক্যাম্পবেল ১৯

52

কাউন্টডাউন করার পরে ট্রিগার ক্রিয়া

Timer(Duration(seconds: 3), () {
  print("Yeah, this line is printed after 3 seconds");
});

ক্রিয়াগুলি পুনরাবৃত্তি করুন

Timer.periodic(Duration(seconds: 5), (timer) {
  print(DateTime.now());
});

তাত্ক্ষণিকভাবে ট্রিগার টাইমার

Timer(Duration(seconds: 0), () {
  print("Yeah, this line is printed immediately");
});

10

উপরের উত্তরের উপর কেবল আরও বিবরণ যুক্ত করা হচ্ছে

টাইমার কার্যকারিতা নীচে সময়কাল সময়ের সাথেও কাজ করে:

const Duration(
      {int days = 0,
      int hours = 0,
      int minutes = 0,
      int seconds = 0,
      int milliseconds = 0,
      int microseconds = 0})

উদাহরণ:

  Timer(Duration(seconds: 3), () {
    print("print after every 3 seconds");
  });

6

(এটি গুগলের শীর্ষ ফলাফল হিসাবে পুরানো কি-তে প্রতিক্রিয়া যুক্ত করা)

আমি একটি ব্লকের মধ্যে কলব্যাকে একটি নতুন রাজ্য উত্পন্ন করার চেষ্টা করেছি, এবং এটি কার্যকর হয়নি। টাইমার এবং ফিউচার.ডিলিয়েড দিয়ে চেষ্টা করেছেন।

যাইহোক, কি কাজ ছিল ...

await Future.delayed(const Duration(milliseconds: 500));

yield newState;

খালি ভবিষ্যতের অপেক্ষায় তারপরে ফাংশনটি চালানো।




2

আপনি এটি দুটি উপায়ে করতে পারেন 1 হয় Future.delayedএবং 2 হয়Timer

টাইমার ব্যবহার

Timer এমন একটি শ্রেণি যা একটি গণনা-ডাউন টাইমার উপস্থাপন করে যা একবারের শেষে পৌঁছে গেলে কোনও ক্রিয়াকলাপ করতে কনফিগার করা হয় এবং এটি একবার বা বার বার গুলি চালাতে পারে।

dart:async ব্যবহারের জন্য প্রোগ্রাম শুরু করতে প্যাকেজ  আমদানি করতে ভুলবেন না Timer

Timer(Duration(seconds: 5), () {
  print(" This line is execute after 5 seconds");
});

ফিউচার.ডিলেড ব্যবহার করা

Future.delayed এমন একটি ভবিষ্যত তৈরি করে যা তার বিলম্বের পরে গণনা চালায়।

import "dart:async"; ব্যবহারের জন্য প্রোগ্রাম শুরু করার জন্য প্যাকেজ  নিশ্চিত করুন Future.delayed

Future.delayed(Duration(seconds: 5), () {
   print(" This line is execute after 5 seconds");
});


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