Spreadsheet Decoder is a library for decoding spreadsheets for ODS and XLSX files.

Overview

Spreadsheet Decoder

Build Status Coverage Status Pub version

Spreadsheet Decoder is a library for decoding and updating spreadsheets for ODS and XLSX files.

Usage

On server-side

import 'dart:io';
import 'package:spreadsheet_decoder/spreadsheet_decoder.dart';

main() {
  var bytes = File.fromUri(fullUri).readAsBytesSync();
  var decoder = SpreadsheetDecoder.decodeBytes(bytes);
  var table = decoder.tables['Sheet1'];
  var values = table.rows[0];
  ...
  decoder.updateCell('Sheet1', 0, 0, 1337);
  File(join(fullUri).writeAsBytesSync(decoder.encode());
  ...
}

On client-side

import 'dart:html';
import 'package:spreadsheet_decoder/spreadsheet_decoder.dart';

main() {
  var reader = FileReader();
  reader.onLoadEnd.listen((event) {
    var decoder = SpreadsheetDecoder.decodeBytes(reader.result);
    var table = decoder.tables['Sheet1'];
    var values = table.rows[0];
    ...
    decoder.updateCell('Sheet1', 0, 0, 1337);
    var bytes = decoder.encode();
    ...
  });
}

Features not yet supported

This implementation doesn't support following features:

  • annotations
  • spanned rows
  • spanned columns
  • hidden rows (visible in resulting tables)
  • hidden columns (visible in resulting tables)

For XLSX format, this implementation only supports native Excel format for date, time and boolean type conversion. In other words, custom format for date, time, boolean aren't supported and then file exported from LibreOffice as well.

License

The MIT License, see LICENSE.

Comments
  • writing values in cells who do not contain any values in them

    writing values in cells who do not contain any values in them

    Will there be any new method added to write cells ? Because of restriction placed on updateCell only those cells with existing values can be replaced. What to do when have to write cells which do not have any value?

    opened by Sacchid 7
  • Nullsafety branch

    Nullsafety branch

    I converted this package to NNBD. I can provide a PR, however publishing will be only possible once archive has been converted which still is blocked by crypto, which needs to be converted first.

    See https://github.com/sma/spreadsheet_decoder/tree/nullsafety

    enhancement 
    opened by sma 4
  • when i send a new created empty xlsx, and then insertRow() or insertColumn(),it will cause exception, because the SpreadsheetTable's default _maxRows and _maxCols is -1 but not 0.

    when i send a new created empty xlsx, and then insertRow() or insertColumn(),it will cause exception, because the SpreadsheetTable's default _maxRows and _maxCols is -1 but not 0.

    thank you! when i decode a new created empty xlsx, and then insertRow() or insertColumn(), it will cause a exception, because the SpreadsheetTable's _maxRows and _maxCols's initial value is -1, but not 0, so the "if (rowIndex < 0 || rowIndex > _tables[sheet]._maxRows)" will always be true.

    question 
    opened by taihangg 4
  • Unhandled Exception: FormatException: Could not find End of Central Directory Record

    Unhandled Exception: FormatException: Could not find End of Central Directory Record

    E/flutter (15982): #0      ZipDirectory._findSignature (package:archive/src/zip/zip_directory.dart:149:5)
    E/flutter (15982): #1      new ZipDirectory.read (package:archive/src/zip/zip_directory.dart:28:20)
    E/flutter (15982): #2      ZipDecoder.decodeBuffer (package:archive/src/zip_decoder.dart:21:30)
    E/flutter (15982): #3      ZipDecoder.decodeBytes (package:archive/src/zip_decoder.dart:15:12)
    E/flutter (15982): #4      new SpreadsheetDecoder.decodeBytes (package:spreadsheet_decoder/src/spreadsheet.dart:75:32)
    E/flutter (15982): #5      _LoginPageState.readData (package:studentsocialgooglecalendar/login_page.dart:27:38)
    E/flutter (15982): #6      _LoginPageState.readFileSync (package:studentsocialgooglecalendar/login_page.dart:20:5)
    E/flutter (15982): <asynchronous suspension>
    E/flutter (15982): #7      _LoginPageState.build.<anonymous closure> (package:studentsocialgooglecalendar/login_page.dart:58:11)
    E/flutter (15982): #8      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
    E/flutter (15982): #9      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
    E/flutter (15982): #10     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
    E/flutter (15982): #11     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
    E/flutter (15982): #12     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
    E/flutter (15982): #13     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:199:7)
    E/flutter (15982): #14     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:467:9)
    E/flutter (15982): #15     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
    E/flutter (15982): #16     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:117:9)
    E/flutter (15982): #17     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
    E/flutter (15982): #18     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:115:18)
    E/flutter (15982): #19     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:7)
    E/flutter (15982): #20     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
    E/flutter (15982): #21     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
    E/flutter (15982): #22     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
    E/flutter (15982): #23     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
    E/flutter (15982): #24     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
    E/flutter (15982): #25     _rootRunUnary (dart:async/zone.dart:1138:13)
    E/flutter (15982): #26     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
    E/flutter (15982): #27     _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
    E/flutter (15982): #28     _invoke1 (dart:ui/hooks.dart:273:10)
    E/flutter (15982): #29     _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)
    E/flutter (15982): 
    
    invalid question 
    opened by tbm98 3
  • 'XmlText' is not a subtype of type 'XmlElement' in type cast

    'XmlText' is not a subtype of type 'XmlElement' in type cast

    I'm getting this exception in Line 288 of xlsx.dart when trying to read a .xlsx that has been exported from Apple Numbers. The code expects a <worksheet> element as the last child of the loaded document, but the last child is a Text with a \n.

    A more robust approach could be to search for the element instead of assuming it is always the last one:

    var workbench = content.findElements('worksheet').first;
    
    opened by sma 3
  • Package archive 3.2.1 breaks example

    Package archive 3.2.1 breaks example

    Hi,

    If I run the example/spreadsheet_decoder.dart with archive 3.2.1 I get the error:

    Unhandled exception:
    type 'Null' is not a subtype of type 'List<int>' in type cast
    #0      ZipEncoder.getFileCrc32 (package:archive/src/zip_encoder.dart:91:34)
    #1      ZipEncoder.addFile (package:archive/src/zip_encoder.dart:136:15)
    #2      ZipEncoder.encode (package:archive/src/zip_encoder.dart:65:7)
    #3      SpreadsheetDecoder.encode (package:spreadsheet_decoder/src/spreadsheet.dart:175:25)
    #4      main (file:///home/adrian/Documents/repos/git/other/spreadsheet_decoder/example/spreadsheet_decoder.dart:34:32)
    #5      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:32)
    #6      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
    

    Example works with archive version 3.1.10. Not sure if there is a quick fix or something we should report to the archive package maintainers.

    Thanks, Tony

    bug help wanted 
    opened by thumbert 2
  • Flutter Web: not able to read Excel file

    Flutter Web: not able to read Excel file

    HI , I am trying to read rows from excel file which in selected from Html page and give to spreadsheet decoder , but nothing is come later .

    Step1 : this how i got file . InputElement uploadInput = FileUploadInputElement(); uploadInput.click(); uploadInput.multiple = false; uploadInput.draggable = true; uploadInput.onChange.listen((e) { // read file content as dataURL final files = uploadInput.files; final file = files[0]; });

    Step 2 :

    final reader = new FileReader(); reader.onLoadEnd.listen((e) { var bytes = reader.result;

    Logs.debug("process 1"); var decoder = Excel.decodeBytes(bytes, verify: true); // FROM HERE NOTHING , Logs.debug("process 2"); print("************************************************************"); for (var table in decoder.tables.keys) { Logs.debug(table); Logs.debug("${decoder.tables[table].maxCols}"); Logs.debug("${decoder.tables[table].maxRows}"); for (var row in decoder.tables[table].rows) { Logs.debug("$row"); } } }); reader.readAsDataUrl(file);

    after the log "process1" nothing is happening,

    please help me out

    opened by VarmaTech 2
  • fix for absolute path target

    fix for absolute path target

    Problem

    Some excel library (for example, Styleframe as python library) outputs excel file which contains xl/_rels/workbook.xml.rels file's Target differently as follows.

    Cursor_and_StyleframeTest_workbook_xml_rels

    With the current spreadsheet_decoder, it generates error.

    How to reproduce

    To generate excel file which has the problem, execute the following python file.

    from styleframe import StyleFrame
    from datetime import date
    
    
    sf = StyleFrame({
        'a': [1],
        'b': [2],
    })
    
    
    ew = StyleFrame.ExcelWriter(r'data.xlsx')
    sf.to_excel(ew, 'sheet1')
    ew.save()
    

    With the above file, run the following command.

    $ pip install styleframe 
    $ python convert.py
    

    There will be "data.xlsx" in the same directory.

    When read the above file with the current spreadsheet_decoder, it says the following error. You can use the following file and command to generate the error.

    import 'dart:io';
    
    import 'package:spreadsheet_decoder/spreadsheet_decoder.dart';
    
    Future<void> main(List<String> arguments) async {
      final tmp = 'data.xlsx';
      final bytes = File(tmp).readAsBytesSync();
      final decoder = SpreadsheetDecoder.decodeBytes(bytes);
    }
    
    $ dart convert_excel.dart 
    Unhandled exception:
    type 'Null' is not a subtype of type 'List<int>'
    #0      XlsxDecoder._parseTable (package:spreadsheet_decoder/src/xlsx.dart:314:49)
    #1      XlsxDecoder._parseContent.<anonymous closure> (package:spreadsheet_decoder/src/xlsx.dart:301:7)
    #2      Iterable.forEach (dart:core/iterable.dart:279:35)
    #3      XlsxDecoder._parseContent (package:spreadsheet_decoder/src/xlsx.dart:300:39)
    #4      new XlsxDecoder (package:spreadsheet_decoder/src/xlsx.dart:116:5)
    #5      _newSpreadsheetDecoder (package:spreadsheet_decoder/src/spreadsheet.dart:39:14)
    #6      new SpreadsheetDecoder.decodeBytes (package:spreadsheet_decoder/src/spreadsheet.dart:76:12)
    #7      main (...)
    #8      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:32)
    #9      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)```
    

    How to fix

    When Target has absolute path, the variable name namePath on the fixed code should not be with xl/$target but target.substring(1).

    Related issue

    https://github.com/OfficeDev/Open-XML-SDK/issues/88 https://github.com/tidyverse/readxl/issues/294

    opened by wapa5pow 1
  • Decoder doesn't work with xml 4.1.0

    Decoder doesn't work with xml 4.1.0

    Hello,

    I run into an issue while using another package that depends on xml ^4.1.0, while this package still runs on ^3.0.0. It would be nice if the xml version of this could be updated.

    Here is the Exception that I get:

    Because flutter_svg >=0.18.0 depends on xml ^4.1.0 and 
    spreadsheet_decoder 1.1.0 depends on xml ^3.0.0, flutter_svg >=0.18.0 
    is incompatible with spreadsheet_decoder 1.1.0.
    
    And because no versions of spreadsheet_decoder match >1.1.0 <2.0.0, 
    flutter_svg >=0.18.0 is incompatible with spreadsheet_decoder ^1.1.0.
    
    bug 
    opened by RachelleBoerck 1
  • refreshing the excel sheet after updating some cells

    refreshing the excel sheet after updating some cells

    Hello there

    I've updated an excel sheet that includes cells that their values depend on those which have been updated (via a formula)

    how to force the excel sheet to refresh and reflect the actual values of the cells depending on the updates done via the spreadsheet_decoder;

    regards

    opened by KarrarMohamed 1
  • Create a new xls file

    Create a new xls file

    Hi,

    I would like to know how is possible to create a new xls file and fill it with values. I've seen an encode method, it can be used to encode xls file and then save to file?

    Do you have any examples? to play on?

    Thank you.

    duplicate question wontfix 
    opened by massimoliani 1
  • DateTime field wrong timezone.

    DateTime field wrong timezone.

    Hi, Thanks for a great plugin! I am loading excel with date/time fields, and I noticed that they are one hour later than they should. Like the wrong timezone is decoded. How it is possible ? Date value in the cell: 5/5/2021 6:38:00 AM is decoded in futter as:2021-05-05T07:38:00.000

    duplicate enhancement help wanted 
    opened by Mmisiek 2
  • insertRow(sheet, 20) : RangeError: Invalid value: Not in inclusive range 0..12: 20

    insertRow(sheet, 20) : RangeError: Invalid value: Not in inclusive range 0..12: 20

    I put the template Excel file in the asset folder and tested it.

    sample codel:

      var _excel = SpreadsheetDecoder.decodeBytes(bytes, update: true);
    
      String sheet = _excel.tables.keys.first; 
      print('Sheet:>>>>${sheet}');
      _excel
        ..updateCell(sheet, 0, 1, "aaaaaaaaaa")
        ..updateCell(sheet, 1, 1, 'bbbbbbbbbb')
        ..updateCell(sheet, 2, 1, 'cccccccccc')
        ..updateCell(sheet, 1, 2, 8880.3)
        ..insertRow(sheet, 1)
        ..insertRow(sheet, 20)
        ..updateCell(sheet, 0, 09, 'A14=========}')
        ..updateCell(sheet, 0, 15, 'A13---------}')
         ..insertColumn(sheet, 0);
    
    
      var b = _excel.encode();
    

    Error:

    Error: RangeError: Invalid value: Not in inclusive range 0..12: 20
        at Object.throw_ [as throw] (http://localhost:56557/dart_sdk.js:5063:11)
        at spreadsheet_decoder.XlsxDecoder.new.insertRow (http://localhost:56557/packages/spreadsheet_decoder/spreadsheet_decoder.dart.lib.js:227:19)
        at spreadsheet_decoder.XlsxDecoder.new.insertRow (http://localhost:56557/packages/spreadsheet_decoder/spreadsheet_decoder.dart.lib.js:855:13)
        at http://localhost:56557/packages/pronto/pages/base_product_page/excel_upload/product_excel_repository.dart.lib.js:198:12
        at testexcel (http://localhost:56557/packages/pronto/pages/base_product_page/excel_upload/product_excel_repository.dart.lib.js:203:9)
        at testexcel.next (<anonymous>)
        at http://localhost:56557/dart_sdk.js:40192:33
        at _RootZone.runUnary (http://localhost:56557/dart_sdk.js:40062:59)
        at _FutureListener.thenAwait.handleValue (http://localhost:56557/dart_sdk.js:34983:29)
        at handleValueCallback (http://localhost:56557/dart_sdk.js:35551:49)
        at Function._propagateToListeners (http://localhost:56557/dart_sdk.js:35589:17)
        at _Future.new.[_completeWithValue] (http://localhost:56557/dart_sdk.js:35437:23)
        at async._AsyncCallbackEntry.new.callback (http://localhost:56557/dart_sdk.js:35458:35)
        at Object._microtaskLoop (http://localhost:56557/dart_sdk.js:40330:13)
        at _startMicrotaskLoop (http://localhost:56557/dart_sdk.js:40336:13)
        at http://localhost:56557/dart_sdk.js:35811:9
    ProductCount:168
    
    enhancement help wanted 
    opened by Patrick386 3
  • How to update the excel cell as Number instead of text.

    How to update the excel cell as Number instead of text.

    Hi ,

    I am trying to save some values in the excel sheet as numbers that will later be used in Formulas. I am using SpreadsheetDecoder in Dart . The problem is , I am able to save the data , but the data saved is in Text format and so it being text i am not able to use in Formula that need Number. The code I am using is provided below.

    import 'dart:io'; import 'dart:typed_data'; import 'package:path/path.dart'; import 'package:spreadsheet_decoder/spreadsheet_decoder.dart';

    File file = File('FileToUpdate.xlsx'); List requiredRow; SpreadsheetDecoder decoder; Uint8List bytes; /* Row number (rowNum) for various values in excel sheet 'aValue':14 , int 'bValue':15 int 'cValue':16 double */ int rowNum = 14; int newValue = 5;

    void main(List args) { bytes = file.readAsBytesSync(); decoder = SpreadsheetDecoder.decodeBytes(bytes, update: true); final table = decoder.tables['SheetName']; requiredRow = table.rows[rowNum]; var requiredValue = requiredRow[0] as String; print(requiredValue);

    setValue(newValue);

    final valueStored = getValue(); print(valueStored);

    }

    void setValue(int value) { decoder.updateCell('SheetToUpdate', 1, rowNum, value); File(join('FileToUpdate.xlsx')) ..createSync(recursive: true) ..writeAsBytesSync(decoder.encode()); }

    String getValue() { String returnValue = requiredRow[1].toString(); return returnValue; }

    enhancement help wanted 
    opened by AnkuK 3
  • Decoding does not work on client

    Decoding does not work on client

    Hello,

    I am trying to parse an xlsx file on client right after selecting it on an input. I am following the steps suggested in readme file but it seems that the file is not loaded correctly into the archive.

    My code: void onFileUpload(Event event) { final List<File> files = (event.target as InputElement).files; final File file = files[0]; final FileReader reader = FileReader(); reader.onLoad.listen((_) { var decoder = SpreadsheetDecoder.decodeBytes(reader.result); var table = decoder.tables['Sheet1']; var values = table.rows[0]; print(values); }); reader.readAsArrayBuffer(file); }

    Note that the above code works for images, so i am pretty sure that this part is OK. The exception that I get: EXCEPTION: NoSuchMethodError: invalid member on null: 'decompress' STACKTRACE: package:spreadsheet_decoder/src/xlsx.dart 285:9 [_parseTable] package:spreadsheet_decoder/src/xlsx.dart 274:7 <fn> dart:sdk_internal 14797:11 forEach package:spreadsheet_decoder/src/xlsx.dart 273:30 [_parseContent] package:spreadsheet_decoder/src/xlsx.dart 110:5 new package:spreadsheet_decoder/src/spreadsheet.dart 38:14 _newSpreadsheetDecoder package:spreadsheet_decoder/src/spreadsheet.dart 76:12 decodeBytes

    So, the problem is in xlsx.dart file, inside _parse table line 285, var file = _archive.findFile("xl/$target"); does not find the file in the archive and returns null.

    BRs / Kostas

    usage 
    opened by kevag 5
Owner
Stéphane Este-Gracias
Open source advocate since the last century
Stéphane Este-Gracias
Flutter tips and tricks to make the development smoother and easier

Table of Contents Custom Clippers in Flutter Check if Website is Up or Down in Dart Section Titles on ListView in Flutter Circular Progress in Flutter

Praharsh Bhatt 17 Oct 11, 2022
A Collection of Flutter and Dart Tips and Tricks

A Collection of Flutter and Dart Tips and Tricks

Vandad Nahavandipoor 5.7k Dec 27, 2022
Based on Microsoft Fluent Design System and made using the help of Flutter VelocityX.

Vx Fluent UI for Flutter Based on Microsoft Fluent Design System and made using the help of Flutter VelocityX. VxFluentUI is a Flutter component libra

Pawan Kumar 14 Jan 28, 2022
It says it all. Not In Flutter Docs, a sort of underground guide to flutter app development and design.

Not In Flutter Docs It says it all. Not In Flutter Docs, a sort of underground guide to flutter app development and design. Licenses Code is under BSD

Fred Grott 56 Dec 27, 2022
A Flutter implementation of an expandable and animated floating search bar, also known as persistent search.

Material Floating Search Bar A Flutter implementation of an expandable floating search bar, also known as persistent search, similar to the ones used

null 390 Mar 3, 2022
A Flutter widget that scrolls text widget and other widget

marquee_widget A Flutter widget that scrolls Widget Text and other Widget with supported RTL. Provides many customizationsincluding custom scroll dire

Yousif Khalid 23 Nov 21, 2022
Simple and easy-to-use Dart wrapper for HackerEarth API (Compile & Run)

HackerEarth API Simple and easy-to-use Dart wrapper for HackerEarth API which provides endpoints for compiling and running code in several languages.

Tirth 8 Dec 21, 2019
This library allows you to create editable tables and spreadsheets with ease, either by providing initial row and column count to display an empty table or use it with predefined rows and column data sets.

Editable ⚡️ A highly customizable, editable table package for Flutter projects. Specs This package allows you to create editable tables and spreadshee

Godwin Asuquo 94 Dec 7, 2022
Dart library for decoding/encoding image formats, and image processing.

image Overview A Dart library providing the ability to load, save and manipulate images in a variety of different file formats. The library is written

Brendan Duncan 907 Dec 27, 2022
A package that helps with encoding and decoding of geohashes.

georange Georange is a package that helps with encoding geohashes, decoding geohashes,calculating distance between 2 points and generating latitudinal

Dennis Chege 8 Feb 17, 2022
Polyline encoding algorithm for encoding and decoding a list of coordinates

Polyline_do Mapbox supported Polyline encoding is a lossy compression algorithm that allows you to store a series of coordinates as a single string. P

Fernando 4 Sep 13, 2021
FileManager is a wonderful widget that allows you to manage files and folders, pick files and folders, and do a lot more. Designed to feel like part of the Flutter framework.

File Manager FileManager is a wonderful widget that allows you to manage files and folders, pick files and folders, and do a lot more. Designed to fee

Devs On Flutter 52 Dec 30, 2022
Download files from Firebase Storage with Flutter. List all images, videos, or other files from Firebase and download them.

Flutter Tutorial - Download Files From Firebase Storage Download files from Firebase Storage with Flutter. List all images, videos, or other files fro

Johannes Milke 28 Dec 4, 2022
Upload Files To Firebase Storage with Flutter. Pick images, videos, or other files from your device and upload them to Firebase.

Flutter Tutorial - Upload Files To Firebase Storage Upload Files To Firebase Storage with Flutter. Pick images, videos, or other files from your devic

Johannes Milke 30 Dec 28, 2022
🎯 This library automatically generates object classes from JSON files that can be parsed by the freezed library.

The Most Powerful Way to Automatically Generate Model Objects from JSON Files ⚡ 1. Guide ?? 1.1. Features ?? 1.1.1. From 1.1.2. To 1.2. Getting Starte

KATO, Shinya / 加藤 真也 14 Nov 9, 2022
A simple and robust dart FTP Client Library to interact with FTP Servers with possibility of zip and unzip files.

Flutter FTP Connect Flutter simple and robust dart FTP Connect Library to interact with FTP Servers with possibility of zip and unzip files. Key Featu

Salim Lachdhaf 49 Dec 13, 2022
gen_lang is a dart library for internationalization. Extracts messages to generate dart files required by Intl, inspired by Intl_translation and Flutter i18n

gen_lang gen_lang is a dart library for internationalization. Extracts messages to generate dart files required by Intl. Now, three steps for internat

kw101 93 Oct 18, 2022
Load and get full control of your Rive files in a Flutter project using this library.

⚠️ Please migrate to the new Rive Flutter runtime. This runtime is for the old Rive (formerly Flare) and will only receive updates for breaking issues

2D, Inc 2.6k Dec 31, 2022
🚀 Simple library to download files easily.

Dart DL Simple library to download files easily. Links GitHub Pub.dev Documentation Features Uses native dart:io to get data. Ability to parse differe

ZYROUGE 2 Feb 11, 2022
A Dart Tiled library. Parse your TMX files into useful representations. Compatible with Flame.

Tiled Dart A Dart Tiled library. Install from Dart Pub Repository Include the following in your pubspec.yaml: dependencies: tiled: 0.8.1 Usa

Flame Engine 44 Oct 31, 2022