Code Monkey home page Code Monkey logo

weishirongzhen / flutter_smooth Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fzyzcjy/flutter_smooth

0.0 0.0 0.0 9.3 MB

Achieve ~60 FPS, no matter how heavy the tree is to build/layout

Home Page: https://fzyzcjy.github.io/flutter_smooth/

License: MIT License

JavaScript 5.15% Ruby 0.95% C++ 5.62% Python 9.38% C 0.38% Objective-C 0.93% Java 0.80% Kotlin 0.36% Dart 69.77% TypeScript 0.29% CSS 0.39% Swift 0.48% HTML 0.49% CMake 5.02%

flutter_smooth's Introduction

logo

Achieve ~60 FPS, no matter how heavy the tree is to build/layout.

๐ŸŽผ 3-second video

output_small.mp4

(left = without smooth, right = smooth; captured by external camera to maximally demonstrate end-user perception. High-resolution video here. Deliberately made it super janky for clear demonstration.)

๐Ÿ“š 1-minute explanation

Purpose

No matter how heavy the tree is to build/layout, it will run at (roughly) full FPS, feel smooth, has zero uncomfortable janks, with negligible overhead. (Detailed reports here)

Usage

Two possibilities:

  • Drop-in replacements: For common scenarios, add 6 characters ("Smooth") - ListView becomes SmoothListView, MaterialPageRoute becomes SmoothMaterialPageRoute.

  • Arbitrarily flexible builder: For complex cases, use SmoothBuilder(builder: ...) and put whatever you want to be smooth inside the builder.

๐Ÿš€ What's next

The documentation - https://fzyzcjy.github.io/flutter_smooth/, with usage, demo, benchmark, insights, and more.

Note Feel free to create an issue if you have any questions/problems. I usually reply quickly within minutes if not hours, except for sleeping :)

๐Ÿ’ญ Current status

Now I am working on pull requests to Flutter framework and engine (i.e. not directly modifying code in this repository), such that you can use this package with standard stable Flutter. An auto-generated list of PRs can be seen here, or conversations here.

Contributors

All Contributors

Thanks goes to these wonderful people (emoji key following all-contributors specification):

fzyzcjy
fzyzcjy

๐Ÿ’ป ๐Ÿ“– ๐Ÿค”
Ian Hickson
Ian Hickson

๐Ÿค”
Dan Field
Dan Field

๐Ÿค”
Jonah Williams
Jonah Williams

๐Ÿค”
gaaclarke
gaaclarke

๐Ÿค”
Nayuta403
Nayuta403

๐Ÿ“–
pajlada
pajlada

๐Ÿ“–

More specifically, thanks for all these contributions:

  • @Hixie (Flutter team): Consider details of my several proposals to the Flutter framework/engine such as requiring zero-overhead principle. Construct concrete cases when the initial proposal becomes fragile.
  • @dnfield (Flutter team): Provide a canonical janky case inside Flutter framework to help prototyping. Point out slowness of sync generators which avoids detouring.
  • @jonahwilliams (Flutter team): Elaborate shortcomings of the old gesture system proposal (later I made a much more natural one).
  • @gaaclarke (Flutter team): Share his pet theory that slowness is caused by memory locality, indicating another potential application of the package.
  • @Nayuta403: Fix link.
  • @pajlada: Fix typo.

flutter_smooth's People

Contributors

fzyzcjy avatar allcontributors[bot] avatar dependabot[bot] avatar nayuta403 avatar pajlada avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.