flutter app to view and edit csvs
  • Dart 77.1%
  • Kotlin 13.8%
  • Nix 9.1%
Find a file
2026-04-24 15:15:19 +02:00
.flutter@44a626f4f0 add flutter submodule 2026-02-11 16:34:01 -05:00
android Merge branch 'main' into open-csv-intent 2026-04-24 15:13:11 +02:00
build/app/outputs/flutter-apk update build apks 2026-02-18 16:11:31 -05:00
fastlane/metadata/android/en-US add fastlane icon 2026-04-19 14:55:02 -04:00
integration_test add automated coverage for Android file opens 2026-04-21 11:36:25 -04:00
lib add automated coverage for Android file opens 2026-04-21 11:36:25 -04:00
test add automated coverage for Android file opens 2026-04-21 11:36:25 -04:00
test_driver add automated coverage for Android file opens 2026-04-21 11:36:25 -04:00
.envrc initial commit 2026-02-04 14:12:40 -05:00
.gitignore updating .gitignore to ignore local.properites file generated by devenv, and updating devenv 2026-03-31 12:04:53 -04:00
.gitmodules add flutter submodule 2026-02-11 16:34:01 -05:00
.metadata working app (tested on android) 2026-02-09 12:18:23 -05:00
analysis_options.yaml working app (tested on android) 2026-02-09 12:18:23 -05:00
devenv.lock updating .gitignore to ignore local.properites file generated by devenv, and updating devenv 2026-03-31 12:04:53 -04:00
devenv.nix Merge branch 'main' into emulator 2026-04-24 15:10:49 +02:00
devenv.yaml initial commit 2026-02-04 14:12:40 -05:00
LICENSE working app (tested on android) 2026-02-09 12:18:23 -05:00
pubspec.lock setting up android emulator, needed to pin android version in build.gradle.kts 2026-04-24 09:08:04 -04:00
pubspec.yaml add automated coverage for Android file opens 2026-04-21 11:36:25 -04:00
QUICKSTART.md working app (tested on android) 2026-02-09 12:18:23 -05:00
README.md setting up android emulator, needed to pin android version in build.gradle.kts 2026-04-24 09:08:04 -04:00

CSV Editor - Flutter App

A Flutter application for viewing and editing CSV files.

Features

  • 📂 Open CSV Files: Pick and load CSV files from your device
  • ✏️ Edit Cells: Tap any cell to edit its content
  • Add Rows/Columns: Dynamically add new rows and columns
  • 🗑️ Delete Rows/Columns: Remove unwanted rows or columns
  • 💾 Save Changes: Export edited CSV back to your device
  • 🆕 Create New CSV: Start with a blank spreadsheet
  • 📊 Spreadsheet View: Familiar table interface with scrolling
  • ⚠️ Change Tracking: Visual indicator for unsaved changes

Setup Instructions

Prerequisites

  • Flutter SDK (3.0.0 or higher)
  • Android Studio or VS Code with Flutter extensions
  • Android SDK
  • A physical Android device or emulator (API level 21+)

Installation

  1. Navigate to the project directory:

    cd csv_editor
    
  2. Install dependencies:

    flutter pub get
    
  3. Connect your Android device or start an emulator:

    flutter devices
    
  4. Run the app:

    flutter run
    

Android Emulator with devenv

This repo manages its Android emulator tooling through devenv and keeps mutable AVD state under the repo-local .android/ directory.

  1. Enter the dev shell:

    devenv shell
    
  2. Create the pinned emulator once:

    android-avd-create
    
  3. Launch the emulator:

    flutter-emulator-up
    
  4. In another shell, confirm the device and run the app:

    devenv shell
    android-devices
    android-adb devices -l
    flutter-devices
    flutter-run-emulator
    

Other Flutter helpers:

  • flutter-run-android runs the app on the default Android target
  • flutter-run-android <device-id> runs on a specific Android device
  • flutter-run-emulator runs on emulator-5554 by default
  • flutter-devices lists Flutter-visible devices

Pinned emulator image for this repo:

  • AVD name: csv-editor-api36
  • Package: system-images;android-36;google_apis;x86_64

Notes:

  • ANDROID_USER_HOME is set to .android/
  • ANDROID_AVD_HOME is set to .android/avd/
  • adb comes from the host as requested; the helper command just uses it from the shell

Building APK

To build a release APK:

flutter build apk --release

The APK will be located at: build/app/outputs/flutter-apk/app-release.apk

Usage

Opening a CSV File

  1. Tap the folder icon in the app bar, or
  2. Tap the "Open CSV File" button on the welcome screen
  3. Select a CSV file from your device

Creating a New CSV

  1. Tap the "+" icon in the app bar, or
  2. Tap the "Create New CSV" button on the welcome screen

Editing

  • Edit Cell: Tap any cell and type to modify its content
  • Add Row: Tap the "Add Row" button
  • Add Column: Tap the "Add Column" button
  • Delete Row: Tap the delete icon next to the row number
  • Delete Column: Tap the delete icon in the column header

Saving

  1. Tap the save icon in the app bar or the floating action button
  2. Choose a location and filename
  3. Confirm to save the CSV file

Permissions

The app requires storage permissions to read and write CSV files:

  • READ_EXTERNAL_STORAGE
  • WRITE_EXTERNAL_STORAGE
  • MANAGE_EXTERNAL_STORAGE (Android 11+)

Permissions are requested at runtime when needed.

Technical Details

Dependencies

  • csv (^6.0.0): CSV parsing and generation
  • file_picker (^8.0.0): Native file picking dialog
  • path_provider (^2.1.0): Access to file system directories
  • permission_handler (^11.0.0): Runtime permission management

Troubleshooting

Permission Issues

If you encounter permission errors on Android 11+:

  1. Go to Settings > Apps > CSV Editor > Permissions
  2. Grant storage permissions manually

File Not Opening

  • Ensure the file is a valid CSV format
  • Check that the file is not corrupted
  • Try opening a different CSV file

Build Errors

If you encounter build errors:

flutter clean
flutter pub get
flutter run

Future Enhancements

Potential features for future versions:

  • Search and filter functionality
  • Sort columns
  • Cell formatting options
  • Import/export other formats (Excel, JSON)
  • Undo/redo functionality
  • Column resizing
  • Freeze header row