Boosting Flutter Performance with Isolates: Stop Freezing Your UI


Full article on Medium

The Problem: Heavy Computation on the Main Thread

You want to find the 20,000th prime number in your Flutter app. Running this function on the main thread will cause UI jank or even a complete freeze:

int findLargePrime(int n) {
  int count = 0;
  int num = 1;
  while (count < n) {
    num++;
    if (isPrime(num)) {
      count++;
    }
  }
  return num;
}        
bool isPrime(int number) {
  if (number < 2) return false;
  for (int i = 2; i <= number ~/ 2; i++) {
    if (number % i == 0) return false;
  }
  return true;
}        

If you run this function directly inside setState() or within a button-click event, it blocks the UI thread. Any animations or interactions will freeze until the computation completes.

🚀 Quick Guide: Using compute() to Prevent UI Freezing in Flutter

This is a summary of how to use compute() to move heavy computations to an Isolate and keep your UI smooth. If you want a detailed explanation, read the full article below.

📌 Required Import

import 'package:flutter/foundation.dart'; // Required for compute()        

⚡ Example: Heavy Computation Without vs. With compute()

Without Isolate (UI Freezes)

void _runHeavyTask() {
  setState(() {
    _result = findLargePrime(20000); // Blocks the UI thread
  });
}        

With compute() (UI Stays Responsive)

void _runHeavyTaskWithIsolate() async {
  final result = await compute(findLargePrime, 20000); // Runs in an isolate
  setState(() => _result = result);
}        

🔑 Key Difference

🚀 compute() spawns a separate isolate, keeping the main UI thread free, while running findLargePrime() directly blocks the UI.

Full article on Medium

To view or add a comment, sign in

Others also viewed

Explore topics