Renders a wavefront .obj on to a canvas.

Overview

flutter_3d_obj

A flutter package to render wavefront obj files on a canvas.

Usage

To use this package, add flutter_3d_obj to your pubspec.yaml file. Then import the package to use it.

Example Usage

The following example basic usage of package.

...
child: new Object3D(size:'/size of canvas/',
                    path:'/path of file/',
                    asset: true'/set true to load file from assets/'),
...

If SD-card path provided, ensure SD-card permissions are available.

Example

To run the example.

* git clone https://github.com/hemanthrajv/flutter_3d_obj.git
* cd /path to cloned dir/
* cd example
* flutter run

Screenshot:

Failed to load Screenshot

Built With

  • Flutter - A framework for building crossplatform mobile applications with native look and feel.

Author

Hemanth Raj StackOverflow

Getting Started

For help getting started with Flutter, view online documentation.

Comments
  • Not working with other blender models

    Not working with other blender models

    Hi @hemanthrajv The example works out of the box if I update the gradle version to latest.

    I am facing issues with loading a different model. I tried a couple of models and am getting the error

    E/flutter (31925): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: Unable to load asset: assets/BodyMesh.obj

    Thank you again for sharing your awesome work.

    Best Chandra

    opened by ghost 8
  • 3d

    3d

    I do the same sort of 3d with flutter.

    I have been looking into rendering a 3d view that can be panned and zoomed and orbit around. Even doing picking.

    Now flutter does not have a 3d view exposed but it is skia under the hood. So there is hope.

    One idea is to build a 3d engine as a plug-in that does have opengl / metal engine. This gets you the speed. Then using Method Channels it's possible to output the rendered images to flutter at very high frame rate. It's called asynchonous resource loading in flutter. It's how they can make a scrolling list do fast

    Wondering if you have looked into this ?

    opened by ghost 4
  • Build Failed: Update Version Environment

    Build Failed: Update Version Environment

    The current Dart SDK version is 2.1.0-dev.1.0.flutter-ccb16f7282.

    Because appdepends on flutter_3d_obj any which requires SDK version >=1.8.0 <2.0.0, version solving failed. pub get failed (1)

    opened by PramUkesh 1
  • Change obj file runtime

    Change obj file runtime

    Hello and first of all thank you for the great package for making the 3d rendering easy on flutter. I have found a little bug through, I am using flutter_bloc and want to change object while I toggle between options, I have my code, but it isn't changing the obj file. can you look into the matter? This is my code.

    import 'package:cube/bloc/switch_bloc.dart';
    import 'package:flutter/material.dart';
    import 'package:flutter_3d_obj/flutter_3d_obj.dart';
    import 'package:flutter_bloc/flutter_bloc.dart';
    
    class HomePage extends StatefulWidget {
      @override
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      bool switchState = false;
      double rating = 300;
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Cube'),
          ),
          body: BlocProvider(
            create: (context) => SwitchBloc(),
            child: Container(
              color: Colors.white,
              child: Column(children: [
                Expanded(
                  flex: 9,
                  child: BlocBuilder<SwitchBloc, SwitchState>(
                    builder: (BuildContext context, state) {
                      if (state is SwitchChanged) {
                        if (state.switchState) {
                          return CenterWidget(
                              modelSource: 'assets/cube/cube.obj', rating: rating);
                        } else {
                          return CenterWidget(
                              modelSource: 'assets/wired_cube/wired_cube.obj',
                              rating: rating);
                        }
                      }
                      return CenterWidget(
                          modelSource: 'assets/wired_cube/wired_cube.obj',
                          rating: rating);
                    },
                  ),
                ),
                Divider(),
                Expanded(
                  flex: 3,
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      Row(
                        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                        children: <Widget>[
                          Text('Wire'),
                          BlocBuilder<SwitchBloc, SwitchState>(
                            builder: (context, state) {
                              bool switchVal;
                              if (state is SwitchInitial) {
                                switchVal = state.switchState;
                              } else if (state is SwitchChanged) {
                                switchVal = state.switchState;
                              }
                              return Switch(
                                value: switchVal,
                                onChanged: (value) =>
                                    BlocProvider.of<SwitchBloc>(context).add(
                                  OnSwitchPressed(switchValue: switchVal),
                                ),
                              );
                            },
                          ),
                          Text('Solid')
                        ],
                      ),
                      Slider(
                        value: rating,
                        onChanged: (value) => setState(() {
                          rating = value;
                        }),
                        min: 300,
                        max: 1200,
                      ),
                    ],
                  ),
                ),
              ]),
            ),
          ),
        );
      }
    }
    
    class CenterWidget extends StatelessWidget {
      const CenterWidget({
        Key key,
        @required this.modelSource,
        @required this.rating,
      }) : super(key: key);
    
      final String modelSource;
      final double rating;
    
      @override
      Widget build(BuildContext context) {
        return Center(
          child: Object3D(
            size: Size(30, 30),
            path: modelSource,
            asset: true,
            zoom: rating,
          ),
        );
      }
    }
    
    
    opened by jaydangar 0
  • Invalid Double Issue

    Invalid Double Issue

    Hi, I've encountered the following issue. Please check:

    My Code: @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Object3D( size: const Size(400.0, 400.0), path: 'assets/banana_plant/banana_plant.obj', asset: true), ), ); }

    The Exception:

    I/flutter (28517): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════ I/flutter (28517): The following FormatException was thrown during paint(): I/flutter (28517): Invalid double I/flutter (28517): I/flutter (28517): The relevant error-causing widget was: I/flutter (28517): CustomPaint I/flutter (28517): file:///C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_3d_obj-0.0.6/lib/flutter_3d_obj.dart:118:18 I/flutter (28517): I/flutter (28517): When the exception was thrown, this was the stack: I/flutter (28517): #0 double.parse (dart:core-patch/double_patch.dart:112:28) I/flutter (28517): #1 _ObjectPainter._parseObjString.<anonymous closure> (package:flutter_3d_obj/flutter_3d_obj.dart:181:37) I/flutter (28517): #2 List.forEach (dart:core-patch/growable_array.dart:282:8) I/flutter (28517): #3 _ObjectPainter._parseObjString (package:flutter_3d_obj/flutter_3d_obj.dart:174:11) I/flutter (28517): #4 _ObjectPainter.paint (package:flutter_3d_obj/flutter_3d_obj.dart:307:22) I/flutter (28517): #5 RenderCustomPaint._paintWithPainter (package:flutter/src/rendering/custom_paint.dart:531:13) I/flutter (28517): #6 RenderCustomPaint.paint (package:flutter/src/rendering/custom_paint.dart:572:7) I/flutter (28517): #7 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter (28517): #8 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter (28517): #9 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter (28517): #10 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter (28517): #11 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter (28517): #12 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter (28517): #13 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter (28517): #14 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter (28517): #15 RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:70:15) I/flutter (28517): #16 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter (28517): #17 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter (28517): #18 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2515:15) I/flutter (28517): #19 RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:404:5) I/flutter (28517): #20 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter (28517): #21 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter (28517): #22 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter (28517): #23 _RenderInkFeatures.paint (package:flutter/src/material/material.dart:531:11) I/flutter (28517): #24 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter (28517): #25 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter (28517): #26 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter (28517): #27 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:391:12) I/flutter (28517): #28 RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1800:15) I/flutter (28517): #29 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter (28517): #30 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter (28517): #31 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter (28517): #32 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter (28517): #33 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter (28517): #34 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter (28517): #35 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter (28517): #36 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:135:11) I/flutter (28517): #37 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:95:5) I/flutter (28517): #38 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:980:29) I/flutter (28517): #39 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:404:19) I/flutter (28517): #40 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:13) I/flutter (28517): #41 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:284:5) I/flutter (28517): #42 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1113:15) I/flutter (28517): #43 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1052:9) I/flutter (28517): #44 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:968:5) I/flutter (28517): #48 _invoke (dart:ui/hooks.dart:261:10) I/flutter (28517): #49 _drawFrame (dart:ui/hooks.dart:219:3) I/flutter (28517): (elided 3 frames from dart:async) I/flutter (28517): I/flutter (28517): The following RenderObject was being processed when the exception was fired: RenderCustomPaint#128cb relayoutBoundary=up4: I/flutter (28517): creator: CustomPaint ← _PointerListener ← Listener ← _GestureSemantics ← RawGestureDetector ← I/flutter (28517): GestureDetector ← Object3D ← Center ← _BodyBuilder ← MediaQuery ← LayoutId-[<_ScaffoldSlot.body>] I/flutter (28517): ← CustomMultiChildLayout ← ⋯ I/flutter (28517): parentData: <none> (can use size) I/flutter (28517): constraints: BoxConstraints(0.0<=w<=392.7, 0.0<=h<=785.5) I/flutter (28517): size: Size(392.7, 400.0) I/flutter (28517): This RenderObject has no descendants. I/flutter (28517): ════════════════════════════════════════════════════════════════════════════════════════════════════

    opened by neilkerman 3
  • RangeError (index): Invalid value: Not in range 0..177430, inclusive: -177432

    RangeError (index): Invalid value: Not in range 0..177430, inclusive: -177432

    Hey i try to draw an 3d.obj you can find the object here: https://www.blog.viz-people.com/blog/free-3d-model-lemon-tree/

    I am new to 3d objects, but is the file maybe too large? When i try to draw it, i get following error:

    ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════ I/flutter ( 9803): The following RangeError was thrown during paint(): I/flutter ( 9803): RangeError (index): Invalid value: Not in range 0..177430, inclusive: -177432 I/flutter ( 9803): I/flutter ( 9803): The relevant error-causing widget was: I/flutter ( 9803): CustomPaint I/flutter ( 9803): file:///Users/fm23/Flutter/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_3d_obj-0.0.6/lib/flutter_3d_obj.dart:118:18 I/flutter ( 9803): I/flutter ( 9803): When the exception was thrown, this was the stack: I/flutter ( 9803): #0 List.[] (dart:core-patch/growable_array.dart:146:60) I/flutter ( 9803): #1 _ObjectPainter.paint.<anonymous closure> (package:flutter_3d_obj/flutter_3d_obj.dart:326:28) I/flutter ( 9803): #2 List.forEach (dart:core-patch/growable_array.dart:282:8) I/flutter ( 9803): #3 _ObjectPainter.paint (package:flutter_3d_obj/flutter_3d_obj.dart:324:12) I/flutter ( 9803): #4 RenderCustomPaint._paintWithPainter (package:flutter/src/rendering/custom_paint.dart:531:13) I/flutter ( 9803): #5 RenderCustomPaint.paint (package:flutter/src/rendering/custom_paint.dart:572:7) I/flutter ( 9803): #6 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #7 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #8 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter ( 9803): #9 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #10 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #11 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter ( 9803): #12 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #13 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #14 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2515:15) I/flutter ( 9803): #15 RenderFlex.paint (package:flutter/src/rendering/flex.dart:950:7) I/flutter ( 9803): #16 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #17 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #18 RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:70:15) I/flutter ( 9803): #19 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #20 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #21 RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:70:15) I/flutter ( 9803): #22 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #23 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #24 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2515:15) I/flutter ( 9803): #25 RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:404:5) I/flutter ( 9803): #26 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #27 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #28 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter ( 9803): #29 _RenderInkFeatures.paint (package:flutter/src/material/material.dart:531:11) I/flutter ( 9803): #30 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #31 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #32 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter ( 9803): #33 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:391:12) I/flutter ( 9803): #34 RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1800:15) I/flutter ( 9803): #35 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #36 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #37 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2515:15) I/flutter ( 9803): #38 RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:404:5) I/flutter ( 9803): #39 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #40 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #41 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter ( 9803): #42 _RenderInkFeatures.paint (package:flutter/src/material/material.dart:531:11) I/flutter ( 9803): #43 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #44 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #45 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter ( 9803): #46 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:391:12) I/flutter ( 9803): #47 RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1800:15) I/flutter ( 9803): #48 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #49 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #50 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter ( 9803): #51 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #52 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:184:13) I/flutter ( 9803): #53 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:15) I/flutter ( 9803): #54 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2264:7) I/flutter ( 9803): #55 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:135:11) I/flutter ( 9803): #56 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:95:5) I/flutter ( 9803): #57 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:980:29) I/flutter ( 9803): #58 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:404:19) I/flutter ( 9803): #59 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:13) I/flutter ( 9803): #60 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:284:5) I/flutter ( 9803): #61 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1113:15) I/flutter ( 9803): #62 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1052:9) I/flutter ( 9803): #63 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:968:5) I/flutter ( 9803): #67 _invoke (dart:ui/hooks.dart:261:10) I/flutter ( 9803): #68 _drawFrame (dart:ui/hooks.dart:219:3) I/flutter ( 9803): (elided 3 frames from dart:async) I/flutter ( 9803): I/flutter ( 9803): The following RenderObject was being processed when the exception was fired: RenderCustomPaint#7fb33 relayoutBoundary=up9: I/flutter ( 9803): creator: CustomPaint ← _PointerListener ← Listener ← _GestureSemantics ← RawGestureDetector ← I/flutter ( 9803): GestureDetector ← Object3D ← Column ← Align ← Padding ← Container ← _BodyBuilder ← ⋯ I/flutter ( 9803): parentData: <none> (can use size) I/flutter ( 9803): constraints: BoxConstraints(0.0<=w<=392.7, 0.0<=h<=Infinity) I/flutter ( 9803): size: Size(392.7, 400.0) I/flutter ( 9803): This RenderObject has no descendants. I/flutter ( 9803): ════════════════════════════════════════════════════════════════════════════════════════════════════

    opened by finnmeier23 0
Owner
Hemanth Raj V
An innovation enthusiast and electronics hobbyist.
Hemanth Raj V
Flutter library to add gestures and animations to each Shape you draw on your canvas in your CustomPainter

Flutter library to bring your CustomPainter ?? to Life ✨ ⚡️ touchable library gives you the ability to add various gestures and animations to each Sha

Natesh Bhat 190 Jan 7, 2023
A Flutter 3D widget that renders Wavefront's object files.

Flutter Cube A Flutter 3D widget that renders Wavefront's object files. Getting Started Add flutter_cube as a dependency in your pubspec.yaml file. de

Zebiao Hu 221 Dec 22, 2022
A flutter widget which renders its child outside the original widget hierarchy.

overlay_container A flutter widget which renders its child outside the original widget hierarchy. Demo. This demo is present as an example here. You c

Mustansir Zia 30 Jun 10, 2022
A simple widget that renders BBCode in Flutter.

A simple display for BBCode in Flutter. Supports custom tags and styles. Features Render BBCode into human readable text. Support for custom tags Prev

Marten 3 Nov 15, 2022
A weather app built to learn how to use Canvas and Animation in Flutter.

Weather Quick Disclaimer I removed my private OpenWeather API key from the repo, if you want to get the weather forecast use your own in the openweath

Alessandro Aime 147 Dec 21, 2022
Sample Flutter Drawing App which allows the user to draw onto the canvas along with color picker and brush thickness slider.

DrawApp Sample Flutter Drawing App which allows the user to draw onto the canvas along with color picker and brush thickness slider. All code free to

Jake Gough 226 Nov 3, 2022
A Flutter library for gradually painting SVG path objects on canvas (drawing line animation).

drawing_animation From static SVG assets See more examples in the showcasing app. Dynamically created from Path objects which are animated over time m

null 442 Dec 27, 2022
Fun canvas animations in Flutter based on time and math functions.

funvas Flutter package that allows creating canvas animations based on time and math (mostly trigonometric) functions. The name "funvas" is based on F

null 472 Jan 9, 2023
A vector tile renderer for use in creating map tile images or writing to a canvas. Written in Dart to enable use of vector tiles with Flutter.

vector_tile_renderer A vector tile renderer for use in creating map tile images or writing to a canvas. Written in Dart to enable use of vector tiles

David Green 30 Oct 7, 2022
A weather app built to learn how to use Canvas and Animation in Flutter.

Weather Quick Disclaimer I removed my private OpenWeather API key from the repo, if you want to get the weather forecast use your own in the openweath

Alessandro Aime 147 Dec 21, 2022
Sample Flutter Drawing App which allows the user to draw onto the canvas along with color picker and brush thickness slider.

DrawApp Sample Flutter Drawing App which allows the user to draw onto the canvas along with color picker and brush thickness slider. All code free to

Jake Gough 226 Nov 3, 2022
A flutter package with classes to help testing applications using the canvas

Canvas test helpers MockCanvas is a utility class for writing tests for canvas operations. It supports the same API as the regular Canvas class from d

Blue Fire 12 Jan 31, 2022
A OpenGLES context canvas in flutter.

gl_canvas A OpenGLES context canvas in flutter. Usage // New a GLCanvas require a builder GLCanvas( builder: _builder, ) The builder should return

null 8 Oct 17, 2022
A graphics engine for creating 2D games. Creating objects based on composition and painting on canvas.

A graphics engine for creating 2D games. Creating objects based on composition and painting on canvas.

Stanislav 10 Oct 26, 2022
a package for flutter canvas paint dash line path easily.

dash_painter a package for flutter canvas paint dash line path easily. 1. DashPainter 如何使用 DashPainter 只负责对 路径 Path 的虚线化绘制,不承担组件职能。 一般用在拥有 Canvas 对象的回

FlutterCandies 22 Oct 9, 2022
This project is used to introduce the use of flutter canvas, include draw chart, clip image's path and draw progress indicator.

flutter_canvas This project is used to introduce the use of flutter canvas, include draw chart, clip image's path and draw progress indicator. draw ch

YouXianMing 9 Oct 27, 2022
Uses a Canvas to create a fluid-style navigation bar with flutter

fluid_nav_test_project Fluid Button Bar (null safety) Uses a Canvas to create a fluid-style navigation bar that has a fun bouncy feel to it; also show

Promise Amadi 5 Nov 9, 2022
Flutter library to add gestures and animations to each Shape you draw on your canvas in your CustomPainter

Flutter library to bring your CustomPainter ?? to Life ✨ ⚡️ touchable library gives you the ability to add various gestures and animations to each Sha

Natesh Bhat 190 Jan 7, 2023
About using of canvas in the flutter

❤️ Star ❤️ the repo to support the project or ?? Follow Me.Thanks! Facebook Page Facebook Group QQ Group Developer Flutter Open Flutter Open 963828159

Flutter开源社区 293 Dec 19, 2022
A ludo board game developed in Flutter using canvas.

Fludo Fludo is a Flutter app which uses canvas and animations to build a Ludo board game. Features Roll dice & move your pawns Kill opponent's pawns P

Sumeet Rukeja 98 Dec 19, 2022