Spreadsheet-like UI for Flutter

Bring Excel-Style Sheets to Any Flutter App

FlutterCells gives you editable grids, cell references, and formula evaluation so your mobile, tablet, and desktop Flutter apps feel like a real spreadsheet experience.

Live-like grid behavior
A1: 75
B1: 25
C1: 8
=SUM(A1, B1, C1)
Result: 108

Built for App Teams That Need Spreadsheet Logic

From finance workflows to inventory planners, FlutterCells helps users edit data and compute formulas directly in your app.

Formula Engine

Evaluate expressions like SUM(A1, 25) with familiar spreadsheet-style references.

Touch-Ready Grid UX

Smooth scrolling, editable cells, and mobile-friendly interactions for production Flutter apps.

Cross-Platform by Default

Works across iOS, Android, web, and desktop through a unified Flutter component model.

Integrate in Minutes

Add the widget, provide data, and let formula evaluation handle live recalculations.

final sheet = FlutterCellsSheet(
  rows: 100,
  columns: 12,
  initialData: {
    'A1': 10,
    'A2': 25,
    'A3': '=SUM(A1, A2, 5)',
  },
  onCellChange: (cell, value) {
    debugPrint('$cell changed to $value');
  },
);

// Formula result in A3 => 40

Formula Demo

Try SUM with a live cell value for A1. Example: SUM(A1, 25)

Result: 35

More Usage Examples

Real examples from the package README, including formulas, date arithmetic, and time arithmetic.

Core Formula Evaluation

ExcelGrid grid = ExcelGrid([
  ['12', '12 * 2'],
  ['A1 + 1', 'SUM(A1, B1)'],
  ['', 'IF(ISBLANK(A1), "A1 is blank", "A1 is not blank")']
]);

final evaluator = FormulaEvaluator(grid);
print(evaluator.cell(coordinate: 'B2').value); // 36

Date Arithmetic

ExcelGrid dateGrid = ExcelGrid([
  ['01/15/2024', '5', 'A1 + B1'],
  ['03/01/2024', '01/01/2024', 'A2 - B2'],
]);

final dateEvaluator = FormulaEvaluator(dateGrid);
print(dateEvaluator.cell(coordinate: 'C1').displayValue);
// 01/20/2024

Time Arithmetic

ExcelGrid timeGrid = ExcelGrid([
  ['14:30', '45', 'A1 + B1'],
  ['15:30', '14:15', 'A2 - B2'],
]);

final timeEvaluator = FormulaEvaluator(timeGrid);
print(timeEvaluator.cell(coordinate: 'C1').displayValue);
// 3:15 PM

Cell Access Patterns

final evaluator = FormulaEvaluator(grid);

print(evaluator.cell(coordinate: 'A1').value);
print(evaluator.cell(rowIndex: 2, columnIndex: 1).value);

Documentation Highlights

Built-in functions and parsing behavior for spreadsheet-like workflows.

Supported Functions

  • SUM()
  • ADD()
  • SUBTRACT()
  • MULTIPLY()
  • DIVIDE()
  • IF()
  • ISBLANK()
  • AVERAGE()
  • INT()
  • LEFT()
  • WEEKDAY()
  • WEEKNUM()
  • NEGATE()
  • AND()
  • OR()
  • +, -, *, /, (...)

Date Support

  • Parses formats like MM/DD/YYYY and M/D/YY.
  • Date + Number and Number + Date add days.
  • Date - Number subtracts days.
  • Date - Date returns day difference.
  • Works inside ADD(), SUBTRACT(), IF(), and more.

Time Support

  • Parses 24-hour and AM/PM time strings.
  • Time + Number and Number + Time add minutes.
  • Time - Number subtracts minutes.
  • Time - Time returns minute difference.
  • Handles 24-hour overflow with AM/PM display output.