A Flutter Package to render Mathematics, Physics and Chemistry Equations based on LaTeX

Overview

flutter_tex

GitHub stars pub package

Contents

About

A Flutter Package to render fully offline so many types of equations and expressions based on LaTeX , TeX and MathML, most commonly used are as followings:

  • Mathematics / Maths Equations and expressions (Algebra, Calculus, Geometry, Geometry etc...)

  • Physics Equations and expressions

  • Signal Processing Equations and expressions

  • Chemistry Equations and expressions

  • Statistics / Stats Equations and expressions

  • It also includes full HTML with JavaScript support.

How it works?

Basically it's a flutter dart wrapper around the most powerful JavaScript libraries MathJax and Katex which render the equations in webview_flutter_plus.

Demo Video

Click to Watch Demo on Youtube

Screenshots

Fonts Sample Quiz Sample TeX Document
TeX Document Image & Video InkWell

How to use?

1: Add flutter_tex latest pub package version under dependencies to your package's pubspec.yaml file.

dependencies:
  flutter_tex: ^4.0.3+1

2: You can install packages from the command line:

$ flutter packages get

Alternatively, your editor might support flutter packages get. Check the docs for your editor to learn more.

3: Now you need to put the following implementations in Android, iOS, and Web respectively.

Android

Make sure to add this line android:usesCleartextTraffic="true" in your <project-directory>/android/app/src/main/AndroidManifest.xml under application like this.

<application
       ...
       ...
       android:usesCleartextTraffic="true">
</application>

It completely works offline, without internet connection, but these are required permissions to work properly:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

It'll still work in debug mode without permissions, but it won't work in release application without mentioned permissions.

iOS

Add following code in your <project-directory>/ios/Runner/Info.plist

<key>NSAppTransportSecurity</key>
  <dict>
    <key>NSAllowsArbitraryLoads</key> <true/>
  </dict>
<key>io.flutter.embedded_views_preview</key> <true/> 

Web

For Web support you need to put <script src="assets/packages/flutter_tex/js/flutter_tex.js"></script> and <script type="text/javascript">window.flutterWebRenderer = "canvaskit";</script> in <head> tag of your <project-directory>/web/index.html like this.

<head>
  
    <meta charset="UTF-8">
    <title>Flutter TeX</title>

    <script src="assets/packages/flutter_tex/js/flutter_tex.js"></script>
    <script type="text/javascript">window.flutterWebRenderer = "canvaskit";</script>
</head>

4: Now in your Dart code, you can use:

import 'package:flutter_tex/flutter_tex.dart'; 

5: Now you can use TeXView as a widget:

Examples

Quick Example

TeXView(
    child: TeXViewColumn(children: [
      TeXViewInkWell(
        id: "id_0",
        child: TeXViewColumn(children: [
          TeXViewDocument(r"""<h2>Flutter \( \rm\\TeX \)</h2>""",
              style: TeXViewStyle(textAlign: TeXViewTextAlign.Center)),
          TeXViewContainer(
            child: TeXViewImage.network(
                'https://raw.githubusercontent.com/shah-xad/flutter_tex/master/example/assets/flutter_tex_banner.png'),
            style: TeXViewStyle(
              margin: TeXViewMargin.all(10),
              borderRadius: TeXViewBorderRadius.all(20),
            ),
          ),
          TeXViewDocument(r"""<p>                                
                       When \(a \ne 0 \), there are two solutions to \(ax^2 + bx + c = 0\) and they are
                       $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$</p>""",
              style: TeXViewStyle.fromCSS(
                  'padding: 15px; color: white; background: green'))
        ]),
      )
    ]),
    style: TeXViewStyle(
      elevation: 10,
      borderRadius: TeXViewBorderRadius.all(25),
      border: TeXViewBorder.all(TeXViewBorderDecoration(
          borderColor: Colors.blue,
          borderStyle: TeXViewBorderStyle.Solid,
          borderWidth: 5)),
      backgroundColor: Colors.white,
    ),
   ),
  )

TeXView Document Example

TeXView Document Example

TeXView Markdown Example

TeXView Markdown Example

TeXView Quiz Example

TeXView Quiz Example

TeXView Custom Fonts Example

TeXView Custom Fonts Example

TeXView Image and Video Example

TeXView Image and Video Example

TeXView InkWell Example

TeXView InkWell Example

Complete Example

Complete Example Code

Application Demo.

Get it on Google Play

Demo Source

Web Demo.

You can find web demo at https://flutter-tex.web.app

Api Changes.

Api Usage.

  • children: A list of TeXViewWidget

  • TeXViewWidget

    • TeXViewDocument Holds TeX data by using a raw string e.g. r"""$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$<br> """ You can also put HTML and Javascript code in it.
    • TeXViewMarkdown Holds markdown data.
    • TeXViewContainer Holds a single TeXViewWidget with styling.
    • TeXViewImage renders image from assets or network.
    • TeXViewColumn holds a list of TeXViewWidget vertically.
    • TeXViewInkWell for listening tap events. Its child and id is mandatory.
    • TeXViewGroup a group of TeXViewGroupItem usually used to create quiz layout.
  • TeXViewStyle() You can style each and everything using TeXViewStyle() or by using custom CSS code by TeXViewStyle.fromCSS() where you can pass hard coded String containing CSS code. For more information please check the example.

  • renderingEngine: Render Engine to render TeX (Default is Katex Rendering Engine). Use Katex RenderingEngine for fast render and MathJax RenderingEngine for quality render.

  • loadingWidgetBuilder: Show a loading widget before rendering completes.

  • onRenderFinished: Callback with the rendered page height, when TEX rendering finishes.

  • onTeXViewCreated: Callback when TeXView loading finishes.

For more please see the Example.

To Do:

  • Speed Optimizations as it's a bit slow rendering speed. It takes 1-2 seconds to render after application loaded. (Solved by adding Katex Support)
  • Bug in Web Support on setState everything disappears.

Cautions:

  • Please avoid using too many TeXView in a single page, because this is based on webview_flutter_plus a complete web browser. Which may cause slowing down your app. I am trying to add all necessary widgets within TeXView, So please prefer to use TeXViewWidget. You can check example folder for details. If you find any problem you can report an issue.
Comments
  • Possible Caching with multiple tex views on one page

    Possible Caching with multiple tex views on one page

    Hi, I have noticed that if you have multiple tex views, initially both views render what's given to them, however after you alter one of them using "setstate" and then alter another, it doesn't render what was given to it, but instead what the previous texview displayed. To show you this, I made a video, there is a text view to display the input to the tex view directly over the tex view. both are given the same variable input, but after a bit, you will see things don't match up. I made a clear video explaining this so I hope you can better understand. Thanks

    https://drive.google.com/file/d/10W3EDsEjFtSjgaAOnEfliBBV6xXJTHFP/view?usp=sharing

    Text(f), TeXView( showLoadingWidget: true, renderingEngine: TeXViewRenderingEngine .katex(), children: [ TeXViewContainer( children: [ TeXViewTeX( f, style: TeXViewStyle( backgroundColor: dark ? Color( 0xff2f3136) : Colors .white, contentColor: dark ? Colors .white : Colors .black, ), ) ], ), ],

    opened by JosephShepin 17
  • Rendering of TeX equation is stuck

    Rendering of TeX equation is stuck

    After upgrading the package, all the equations are not getting rendered in the release version of the app. They were rendering before the upgrade. Most equations render, while for others, the progress indicator is shown and rendering does not take place, whether there are few or many equations. I was also wondering what is the maximum number of equations you recommend that should be in a given screen. Thanks.

    opened by flutternoob 15
  • TexView not appear when children only have one TeXViewContainer

    TexView not appear when children only have one TeXViewContainer

    Hi @shah-xad, I'm facing a problem when I want to display only one TeXViewContainer in children. when I make the children are two TeXViewContainer, the widget appears smooth.

    bug 
    opened by IhwanID 13
  • Not rendering long string of html content

    Not rendering long string of html content

    Following is my code which isn't rending and neither is throwing any error

                 TeXView(
                            renderingEngine: TeXViewRenderingEngine.katex(),
                            children: [
                              TeXViewContainer(id: "container_0", children: [
                                TeXViewTeX(
                                  '<span>There are 150 objective multiple choice questions in this paper. This Question Booklet is made up of the following five sections : Section-I, 11, 111, IV &amp; V of 30-30 questions each. The candidate has to attempt all sections. Each question is of one mark. There is no negative marking for wrong answer</span>',
                                  style: TeXViewStyle(
                                    textAlign: TeXViewTextAlign.Center,
                                    // backgroundColor: Colors.red,
                                    contentColor: Colors.black,
                                  ),
                                  id: "tex_0",
                                )
                              ])
                            ],
                          ),
    

    Just tried simple <p>hello there</p>. it worked and rendered but not the above string Please help. Thanks

    bug 
    opened by gkumar9 11
  • ImeThread is not enabled

    ImeThread is not enabled

    TeXView can't show any text. It shows ImeThread is not enabled.

    my code:

    TeXView(
                    renderingEngine: RenderingEngine.Katex,
                    children: [
                      TeXViewChild(
                          id: "child_1",
                          title: r"<h3>Quadratic Equation</h3>",
                          body: r"""<p>
                                       When \(a \ne 0 \), there are two solutions to \(ax^2 + bx + c = 0\) and they are
                                       $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$</p>""",
                          decoration: TeXViewDecoration(
                              style: TeXViewStyle(
                                backgroundColor: Colors.green,
                                contentColor: Colors.white,
                              ),
                              titleStyle: TeXViewStyle(
                                textAlign: TeXViewTextAlign.Center,
                                backgroundColor: Colors.red,
                                contentColor: Colors.white,
                              ),
                              bodyStyle: TeXViewStyle.fromCSS(
                                  "color:white;background-color:light-green")))
                    ],
                    style: TeXViewStyle(
                      elevation: 10,
                      border: TeXViewBorder(
                          all: TeXViewBorderDecoration(
                              borderColor: Colors.blue,
                              borderStyle: TeXViewBorderStyle.Solid,
                              borderWidth: 5)),
                      backgroundColor: Colors.white,
                    ),
                    loadingWidget: Center(
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.center,
                        mainAxisSize: MainAxisSize.min,
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: <Widget>[
                          CircularProgressIndicator(),
                          Text("Rendering with ")
                        ],
                      ),
                    ),
                    onTap: (childID) {
                      print("TeXView $childID is tapped.");
                    }),
    

    Console shows:

    D/Surface ( 5430): Surface::setBufferCount(this=0x8ae13f00,bufferCount=4)
    D/WebView ( 5430): loadUrl(extra headers)=http://localhost:5353/packages/flutter_tex/src/tex_libs/katex/index.html?teXViewServerPort=5353
    I/cr_Ime  ( 5430): ImeThread is not enabled.
    

    flutter doctor shows:

    Doctor summary (to see all details, run flutter doctor -v):
    [√] Flutter (Channel master, 1.18.0-12.0.pre, on Microsoft Windows
        [Version 10.0.18362.720], locale en-US)
    
    [√] Android toolchain - develop for Android devices (Android SDK version 29.0.1)
    [√] Android Studio (version 3.6)
    [√] Connected device (1 available)
    
    • No issues found!
    

    Please help how to over come this issue.

    bug 
    opened by Mahmud-CSE16 11
  • Delay Rendering(It takes almost 15-20 sec for rendering)

    Delay Rendering(It takes almost 15-20 sec for rendering)

    It takes much time for rendering in app. I am fetching webview from server . Content is containing html and latex code. And another issue is while we using animation on page in which i am using texview , it is rerender while using animation.

    opened by maheshbhattaraai 10
  • How do I display a local image file?

    How do I display a local image file?

    Hello, is it possible to display a local image file from my android studio assets folder? The raw html code of my TeXViewTeX looks like this:

    const String _texText = r'''  
    <img src="assets\app_icon.png"> <br>
     $$ a^2 = b^2 + c^2 - 2 \, b \, c \cos \alpha $$
    <!-- more code -->
    ''';
    

    I've tried <img src="http://localhost:8080/assets/app_icon.png"> <br> and <img src="file:///android_asset/flutter_assets/assets/app_icon.png"> <br>

    Thanks

    opened by nilsmechanix 9
  • How to check TeXViewDocument HTML Radio Button from TeXView onTap

    How to check TeXViewDocument HTML Radio Button from TeXView onTap

    @shah-xad First of all Thank you very much for developing this amazing Flutter package. Also, sorry for asking this as an issue,

    I've implemented a quiz view using flutter_tex and all the things are working very well as I expected. But, unfortunately, I'm a little bit stuck on my one of a task. What I want to do actually When the user clicks a TeXViewInkwell, automatically check a Radio Button which is in TeXViewDocument as the child of above mentioned TeXViewInkWell.

    The onTap function of parent TeXtView working fine. But how can I check a RadioButton? definitely there must be a bunch of JavaScript code. So could you give me a little help? Please refer my following code.

      Widget getQuestionView(){
        String _imageUrl="";
    
        return Container(
          decoration: new BoxDecoration(
            image: DecorationImage(
              image: new ExactAssetImage('assets/images/main_background.png'),
              fit: BoxFit.cover,
            ),
          ),
          child: Column(
            children: <Widget>[
              getAppBarUI(),
              Expanded(
                flex: 8,
                child: SingleChildScrollView(
                  child: FutureBuilder(
                    future: questionList,
                    builder:
                        (BuildContext context, AsyncSnapshot<List<Question>> snapshot) {
                      switch (snapshot.connectionState) {
                        case ConnectionState.waiting:
                          return Center(
                              child: Lottie.asset('assets/animations/dotloading.json'));
                        case ConnectionState.done:
                          if (snapshot.hasData && snapshot.data.length != 0) {
                            question = snapshot.data;
                            if(question[_currentIndex].imageUrl != null){
                              _imageUrl  = question[_currentIndex].imageUrl;
                            }
                            return Padding(
                              padding: const EdgeInsets.all(16.0),
                              child: Column(
                                children: <Widget>[
                                  TeXView(
                                      showLoadingWidget: false,
                                      renderingEngine: TeXViewRenderingEngine.katex(),
                                      children: [
                                        TeXViewDocument(question[_currentIndex].question,
                                            style: TeXViewStyle.fromCSS("color:black;background-color:white;padding:20px"),
                                        ),
                                      ],
                                      style: TeXViewStyle(
                                        margin: TeXViewMargin.all(0),
                                        elevation: 0,
                                        textAlign: TeXViewTextAlign.Left,
                                        padding: TeXViewPadding.all(0),
                                        borderRadius: TeXViewBorderRadius.all(0),
                                        backgroundColor: Colors.transparent,
                                      ),
                                      onTap: (childID) {
                                      }),
                                  question[_currentIndex].imageStatus == 1 ? Image.network(question[_currentIndex].imageUrl,width: 300) : Container(),
                                  TeXView(
                                      showLoadingWidget: false,
                                      renderingEngine: TeXViewRenderingEngine.katex(),
                                      children: [
                                        TeXViewInkWell(
                                          id: "1",
                                          child: TeXViewDocument(
                                            "<input type='radio' id='answerA' name='answersRadio' value='1' style='margin-right:15px'>" + question[_currentIndex].answerA,
                                            style: TeXViewStyle.fromCSS(
                                                "color:black;background-color:white;padding:20px"),
                                          ),
                                        ),
                                        TeXViewInkWell(
                                          id: "2",
                                          child: TeXViewDocument(
                                            "<input type='radio' id='answerB' name='answersRadio' value='2' style='margin-right:15px'>" + question[_currentIndex].answerB,
                                            style: TeXViewStyle.fromCSS(
                                                "color:black;background-color:white;padding:20px"),
                                          ),
                                        ),
                                        TeXViewInkWell(
                                          id: "3",
                                          child: TeXViewDocument(
                                            "<input type='radio' id='answerC' name='answersRadio' value='3' style='margin-right:15px'>" + question[_currentIndex].answerC,
                                            style: TeXViewStyle.fromCSS(
                                                "color:black;background-color:white;padding:20px"),
                                          ),
                                        ),
                                        TeXViewInkWell(
                                          id: "4",
                                          child: TeXViewDocument(
                                            "<input type='radio' id='answerD' name='answersRadio' value='4' style='margin-right:15px'>" + question[_currentIndex].answerD,
                                            style: TeXViewStyle.fromCSS(
                                                "color:black;background-color:white;padding:20px"),
                                          ),
                                        ),
                                        TeXViewInkWell(
                                          id: "5",
                                          child: TeXViewDocument(
                                            "<input type='radio' id='answerE' name='answersRadio' value='5' style='margin-right:15px'>" + question[_currentIndex].answerE,
                                            style: TeXViewStyle.fromCSS(
                                                "color:black;background-color:white;padding:20px"),
                                          ),
                                        ),
                                      ],
                                      style: TeXViewStyle(
                                        margin: TeXViewMargin.all(0),
                                        elevation: 0,
                                        textAlign: TeXViewTextAlign.Left,
                                        padding: TeXViewPadding.all(0),
                                        borderRadius: TeXViewBorderRadius.all(0),
                                        backgroundColor: Colors.transparent,
                                      ),
                                      onTap: (childID) {
                                        setState(() {
                                          print("TeXView $childID is tapped.");
                                        });
                                      }),
                                ],
                              ),
                            );
                          } else {
                            return Container();
                          }
                          break;
                        default:
                          return Container(); // also check your listWidget(snapshot) as it may return null.
                      }
                    },
                  )
                  ,
                ),
              ),
              Expanded(
                child: Padding(
                  padding: const EdgeInsets.only(bottom: 10),
                  child: Container(
                    alignment: Alignment.bottomCenter,
                    child: RaisedButton(
                      child: Text(
                          question != null ? _currentIndex == (question.length - 1)
                              ? "Submit"
                              : "Next" : "Next"),
                      onPressed: (){
                        _nextSubmit();
                      },
                    ),
                  ),
                ),
              )
    
            ],
          ),
        );
      }
    

    Current Implemented Screen

    opened by sudeshkumara 8
  • Bug: flutter tex web not working

    Bug: flutter tex web not working

    Inside web_tex_view.dart in the _getTeXViewUrl in the return statement when you are forming the URL, query parameter rawTeXHTML should named urlRawTeXHTML.

    It is being accessed as urlRawTeXHTML inside flutter_tex.js

    bug 
    opened by suchibrata 6
  • Images occasionally don't render correctly

    Images occasionally don't render correctly

    When including images in the HTML string they don't always render correctly. I think it depends on the size of the image. For large images it seems to happen more often. Maybe if the MathJax is finished before the image downloads is the cause of the problem. Below is an example with a large image

    import 'package:flutter/material.dart';
    import 'package:flutter_tex/flutter_tex.dart';
    
    main() async {
      runApp(FlutterTeXExample());
    }
    
    class FlutterTeXExample extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: MainPage(),
        );
      }
    }
    
    class MainPage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.white,
          appBar: AppBar(
            title: Text("Flutter TeX Example"),
          ),
          body: Container(
            height: MediaQuery.of(context).size.height,
            child: SingleChildScrollView(
              child: Column(
                children: <Widget>[
                  TeXView(
                      keepAlive: true,
                      key: UniqueKey(),
                      renderingEngine: RenderingEngine.Katex,
                      loadingWidget: Center(child: CircularProgressIndicator()),
                      teXHTML: katexTeXHTML,
                    onRenderFinished: (_) {
                        print('render finished');
                    },
                    onPageFinished: (_) {
                      print('page finished');
                    },
                  ),
                ],
              ),
            ),
          ),
        );
      }
    }
    
    String katexTeXHTML = r"""
       <p>
         A simple Example to render \( \rm\\TeX \) in flutter with full <B>HTML</B> support<br><br>
     
         When \(a \ne 0 \), there are two solutions to \(ax^2 + bx + c = 0\) and they are
     
         $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$<br>
     
     
         Bohr Radius
     
         \( a_0 = \frac{{\hbar ^2 }}{{m_e ke^2 }} \)<br>
     
         Relationship between Energy and Principal Quantum Number
     
         \( E_n = - R_H \left( {\frac{1}{{n^2 }}} \right) = \frac{{ - 2.178 \times 10^{ - 18} }}{{n^2 }}joule \)<br><br>
      
         <br><br>
       </p>
    
        Inline Chemistry Equations <br>
             <p>    
         \( \ce{CO2 + C -> 2 CO} \) <br>
      
         \( \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} \) <br><br><br>
    
         Scroll long formulas $$ \ce{x Na(NH4)HPO4 ->[\Delta] (NaPO3)_x + x NH3 ^ + x H2O} $$ <br>
         
        </p>
        <img src="https://img.wallpapersafari.com/desktop/1920/1080/84/27/nMWzIB.jpg" />
        <br>
       """;
    
    bug 
    opened by jmanns 6
  • Can a TexView be refreshed / re-rendered?

    Can a TexView be refreshed / re-rendered?

    I attempted to place a TexView inside a StreamBuilder that passes some text to be displayed. The TexView stays unchanged.

    Is there a correct way to re-render it?

    opened by OscarEReyes 6
  • TeXViewGroup how to clear the selected option or initialise the selected option if the user is revisiting the question

    TeXViewGroup how to clear the selected option or initialise the selected option if the user is revisiting the question

    Question: Are you using the latest version of flutter_tex package? pub package Answer:Yes

    Question: If you are looking for a feature, have you watched the Demo Video and gone through the examples folder? Answer:Yes In TeXViewGroup how can I deselect the question, there is an option to deselect the option in TeXViewGroup.multipleSelection but in single mode how can the user deselect the selected option. Further if the user revisits the attempted question, the marked option is deselected again. Is there a function present which enables us to initialise and select the option when loading a previously attempted questions and apply the selectedItemStyle on that particular option.

    I have tried setting `selectedOptionId = "" ; but it doesn't refresh the style accordingly. If the user revisits a question, we can store the responses in the list and when a previously attempted question is opened there should be an option to take the selected items from the list. How can we achieve this functionality?

    opened by arth17singh 2
  • The plugin `flutter_tex` uses a deprecated version of the Android embedding

    The plugin `flutter_tex` uses a deprecated version of the Android embedding

    Hi, Upon installing the new version on Flutter using flutter pub add flutter_tex I get the following notice: The plugin flutter_tex uses a deprecated version of the Android embedding. To avoid unexpected runtime failures, or future build failures, try to see if this plugin supports the Android V2 embedding. Otherwise, consider
    removing it since a future release of Flutter will remove these deprecated APIs. If you are plugin author, take a look at the docs for migrating the plugin to the V2 embedding: https://flutter.dev/go/android-plugin-migration.

    Is it possible to migrate the plugin to the V2 embedding? Thanks, Oren

    opened by omishali 0
  • String from API calls

    String from API calls

    TeX's input only takes const String, but my string comes from an API call on my backend, and it does not render the raw string, it just display it raw.

    opened by JohnOlorunsogo 0
  • No support for Html table styles. So table contents get condensed which makes it difficult to read and understand

    No support for Html table styles. So table contents get condensed which makes it difficult to read and understand

    Question: Are you using the latest version of flutter_tex package? pub package Answer: yes

    Question: If you are looking for a feature, have you watched the Demo Video and gone through the examples folder? Answer: yes

    opened by sazzad3802 1
  • Load image from device data directory

    Load image from device data directory

    Question: Are you using the latest version of flutter_tex package? pub package yes:

    Question: If you are looking for a feature, have you watched the Demo Video and gone through the examples folder? Yes:

    I have downloaded image to device, how to show it using flutter_tex.TeXViewImage Currently, it supports only two options TeXViewImage.asset TeXViewImage.network

    opened by phvaha1 0
Owner
Shahzad Akram
A self taught Programmer and a Chemist by profession.
Shahzad Akram
Set of Flutter widgets built using physics based animations.

Elastic Widgets Set of Flutter widgets built using physics based animations. Widgets Seek Bar Range Picker Installation Add this to your package's pub

Alireza Abiri 76 Dec 4, 2021
Dart JS interop for Mermaid - The Javascript tool that makes use of a markdown based syntax to render customizable diagrams, charts and visualizations.

Mermaid (Dart) Dart JS interop for Mermaid - Javascript library that makes use of a markdown based syntax to render customizable diagrams, charts and

Tim Maffett 3 Dec 12, 2022
Flutter package to render html as widgets that supports hyperlink, image, audio, video, iframe and many other tags.

HtmlWidget monorepo This repo contains the source code for everything HtmlWidget-related. Name Link flutter_widget_from_html_core flutter_widget_from_

Đào Hoàng Sơn 445 Jan 6, 2023
Flutter package to render a Material Design Speed Dial.

Flutter Speed Dial Flutter package to render a Material Design Speed Dial. Usage The SpeedDial widget is built to be placed in the Scaffold.floatingAc

null 0 May 20, 2022
A highly customizable Flutter widget to render and interact with JSON objects.

The spreadsheet with superpowers ✨ ! JSON Data Explorer A highly customizable widget to render and interact with JSON objects. Features Expand and col

rows 15 Dec 21, 2022
A Flutter widget for rendering static html as Flutter widgets (Will render over 80 different html tags!)

flutter_html A Flutter widget for rendering HTML and CSS as Flutter widgets. Screenshot 1 Screenshot 2 Screenshot 3 Table of Contents: Installing Curr

Matthew Whitaker 1.5k Jan 5, 2023
Flutter plugin to render stacked page view

Stacked Page View! pub.dev/stacked_page_view Hi! This package will create stacked page view in your flutter app. it's as lightweight as it can get ⚡ ⚡

Navin Kodag 12 Nov 25, 2022
Flutter file based routing - File based routing and nested layouts for Flutter

Flutter File Based Routing I was inspired by the routing in remix.run with neste

Rody Davis 10 Sep 29, 2022
A Flutter based to do list app (yes, another to do list... but... this time based on a beautiful design)

✔️ Flutter to do App "To Do List" A Flutter app based on the design of the To Do App, created by Rudi Hartono, see more on: Uplabs. Getting Started ??

Johan 561 Dec 31, 2022
Facebook based-app - A Facebook based app which actually looks like Facebook

Facebook based mobile application This project is a mobile application which act

Munem Sarker 3 Nov 23, 2022
A Flutter package to make and use beautiful color scheme based themes.

FlexColorScheme Use FlexColorScheme to make beautiful color scheme based Flutter themes, with optional primary color surface blends. The themes are ba

Rydmike 459 Jan 1, 2023
A Dart package that helps to implement value based equality without needing to explicitly override == and hashCode.

Simplify Equality Comparisons Overview Being able to compare objects in Dart often involves having to override the == operator as well as hashCode. No

Felix Angelov 747 Jan 8, 2023
Album Image is based in photo_manager package and has the same concept as image_picker but with a more attractive interface to choose an image or video from the device gallery, whether it is Android or iOS

Album Image is based in photo_manager package and has the same concept as image_picker but with a more attractive interface to choose an image or vide

Phuong Vu 2 Oct 13, 2022
Parallax - A parallax package for touch-based devices, providing a visually appealing user experience

Parallax A parallax package for touch-based devices, providing a visually appeal

MEDAFOX 4 Sep 28, 2022
A future based dart package for the NLT (New Living Translation) API.

NLT API Bible for Dart A future based dart package for the NLT API from Tyndale which can be used to fetch NLT and KJV bible passages. This package re

Ariel Magbanua 3 Nov 17, 2022
Ouday 25 Dec 15, 2022
A widget based on Flutter's new Interactive Viewer that makes picture pinch zoom, and return to its initial size and position when released.

pinch_zoom A widget based on Flutter's new Interactive Viewer that makes picture pinch zoom, and return to its initial size and position when released

Teun Kortekaas 36 Dec 30, 2022
🟧 Lints for Dart and Flutter based on software industry standards and best practices.

Solid Lints Flutter/Dart lints configuration based on software engineering industry standards (ISO/IEC, NIST) and best practices. Usage Add dependency

Solid Software 17 Oct 12, 2022
Flutter frontend for downloading free album and playlists (based on a YouTube URL) and uploading them to a Plex server.

Flutter frontend for downloading free album and playlists (based on a YouTube URL) and uploading them to a Plex server. (The project is currently in progress. There are some additional features and ideas I want to implement.)

null 1 Jan 9, 2022