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 and TeX, 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.

Rendering of equations depends on mini-mathjax a simplified version of MathJax and Katex JavaScript libraries.

This package mainly depends on 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: ^3.6.7+9

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> 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>
</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
Statistics Dart package for easy and efficient data manipulation with many built-in functions and units.

statistics Statistics package for easy and efficient data manipulation with many built-in mathematical functions and units. Usage Numeric extension: i

Graciliano Monteiro Passos 13 Nov 7, 2022
A Flutter package to parse text and make them into linkified text widget

?? Flutter Parsed text A Flutter package to parse text and extract parts using predefined types like url, phone and email and also supports Regex. Usa

Fayeed Pawaskar 213 Dec 27, 2022
A simple Flutter package that makes turning a FAB into a text field easy.

flutter_text_field_fab A simple Flutter widget that makes turning a FAB into a text field easy.

Haefele Software 4 Jan 18, 2022
A Flutter package provides some implementations of TextInputFormatter that format input with pre-defined patterns

A Flutter package provides some implementations of TextInputFormatter that format input with pre-defined patterns

HungHD 192 Dec 31, 2022
Soft and gentle rich text editing for Flutter applications.

About Zefyr Soft and gentle rich text editing for Flutter applications. You are viewing early dev preview version of this package which is no longer a

Memspace 2.2k Jan 8, 2023
Soft and gentle rich text editing for Flutter applications

Soft and gentle rich text editing for Flutter applications. Zefyrka is a fork of Zefyr package with the following improvements: support Flutter 2.0 op

null 85 Dec 21, 2022
Rich Text renderer that parses Contentful Rich Text JSON object and returns a renderable Flutter widget

Contentful Rich Text Renderer for Flutter Rich Text renderer that parses Contentful Rich Text field JSON output and produces a Flutter Widget tree tha

Kumanu 45 Nov 10, 2022
Text Editor in Flutter for Android and iOS to help free write WYSIWYG HTML code

Flutter Summernote Text Editor in Flutter for Android and iOS to help free write WYSIWYG HTML code based on Summernote 0.8.18 javascript wrapper. NOTI

Chandra Abdul Fattah 41 Sep 12, 2022
Flutter textfield validation lets you validate different textform fields in your Flutter app

Flutter textfield validation lets you validate different textform fields in your Flutter app

World-Package 2 Sep 15, 2022
A markdown renderer for Flutter.

Flutter Markdown A markdown renderer for Flutter. It supports the original format, but no inline HTML. Overview The flutter_markdown package renders M

Flutter 828 Aug 12, 2021
A masked text for Flutter.

flutter_masked_text Masked text input for flutter. Alert Hi guys! Unfortunately, I'm not developing mobile anymore. This repo will not receive updates

Ben-hur Santos Ott 264 Dec 21, 2022
Flutter widget that automatically resizes text to fit perfectly within its bounds.

Flutter widget that automatically resizes text to fit perfectly within its bounds. Show some ❤️ and star the repo to support the project Resources: Do

Simon Leier 1.8k Jan 3, 2023
flutter 中文排版,支持分页上下对齐 两端对齐 翻页动画

text_composition flutter 中文排版 分页 上下对齐 两端对齐 多栏布局 弃用richText,使用Canvas,精确定位绘图位置,消除字体对排版影响 视频与截图 demo https://github.com/mabDc/text_composition/releases/t

西红柿大芝麻 50 Nov 3, 2022
Flutter Tutorial - PDF Viewer - Asset, File, Network & Firebase

Flutter Tutorial - PDF Viewer - Asset, File, Network & Firebase Use the Flutter PDF Viewer to download PDF documents and display them within your Flut

Johannes Milke 36 Dec 9, 2022
Flutter phone number input

phone_form_field Flutter phone input integrated with flutter internationalization Features Totally cross platform, this is a dart only package / depen

cedvdb 38 Dec 31, 2022
A low code editor with the full power of flutter.

flutter_blossom ?? Low code editor with the full power of flutter. Think in flutter, watch your ideas come to life, plan ahead and let your creativity

Flutter Blossom 0 Dec 2, 2021
Flutter App for beginner

i_am_rich A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if thi

Trần Văn Nguyên 1 Nov 17, 2021
A powerful extended official text for Flutter, which supports Speical Text(Image,@somebody), Custom Background, Custom overFlow, Text Selection.

Extended official text to build special text like inline image or @somebody quickly,it also support custom background,custom over flow and custom selection toolbar and handles.

FlutterCandies 509 Jan 4, 2023
Rich coin project of flutter

rich_coin flutter实现RichCoin项目。 Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

null 0 Nov 27, 2021