r/FlutterDev • • 4h ago

Discussion xverb: a Total Commander style file manager in Flutter, with Python plugins like Blender

3 Upvotes

been working on xverb for a while, its a two panel keyboard driven file manager for windows, mac and linux. all flutter, GPL-3.0

the part i think is interesting for this sub: the core only manages files, everything else is a plugin. viewers, ftp/smb, archives, dir compare are python plugins running in their own process. for platforms where you cant run code theres declarative extensions, pure json built from the host's render primitives

some stuff that was fun to get right in flutter desktop: native clipboard + drag and drop with explorer/finder, internal draggable windows that go fullscreen on phone, and a pluggable virtual fs so zip: is just a scheme a plugin serves

still early, android builds but barely tested, ios not at all. would love feedback esp on the plugin api

github.com/xsm909/xverb

site + downloads: xverb.pages.dev


r/FlutterDev • • 7h ago

Tooling We just added Jaspr SSR hosting support to Appwrite Sites - SSR web apps entirely in Dart

3 Upvotes

Hey Flutter devs 👋

We’ve been investing quite a bit into making Appwrite a better home for Dart and Flutter developers, and yesterday we shipped something I thought this community might appreciate: Jaspr support on Appwrite Sites, including full server-side rendering.

If you’re not familiar with Appwrite Sites, think of it as our alternative to platforms like Vercel or Netlify, but built directly into Appwrite alongside your backend. Instead of using one provider to host your frontend and another for your database, auth, storage, functions, etc., Appwrite gives you the entire stack in one place. You connect your Git repo, we build and deploy it, and it runs alongside the rest of your Appwrite project.

We've always liked the idea of being able to stay in the Dart ecosystem beyond just the application itself. If it's for integrating with the Appwrite backend or using serverless Appwrite functions in Dart.

Flutter Web is great when you’re building an app-like experience and want to share a codebase across platforms. But for traditional websites - landing pages, docs, blogs, stores, SEO-heavy content - you usually want real server-side rendering.

It also means you can do things like fetch data from Appwrite directly during SSR, while Appwrite provides a short-lived API key for each request instead of requiring you to store a server API key.

With this, you can finally use the same language across essentially your *entire* stack, and you can even share Dart packages between them. Both for iOS, Android, native devices and now the web.

As always, we'd appreciate your feedback and insights on how backend as a service and cloud platforms like Appwrite can work even better in the Flutter/Dart ecosystem.

Full announcement and technical details:
https://appwrite.io/blog/post/announcing-jaspr-support


r/FlutterDev • • 1h ago

Tooling Stop booting simulators to check translations. I built a headless validation engine to mathematically catch RenderFlex overflows in your .arb files.

• Upvotes

Hey everyone,

You build a perfect UI in English. Then you load the German, Russian, Hindi, or Arabic .arb translations, and your layout shatters. You usually don't catch these RenderFlex overflows until you manually boot up iOS and Android simulators and click through every single screen.

I am building L10n Vision, a macOS/Windows desktop app that mathematically validates your translations against physical pixel constraints before you ever compile the code.

I just released the first half of this engine for free: the L10n Vision Exporter for Figma.

How the workflow works:

  1. Select the localized screens in Figma.
  2. Run the Exporter to instantly pull all text layers and their maximum physical pixel constraints directly from your frames.
  3. Paste the data into the L10n Vision Desktop App, and it instantly calculates if your .arb strings will overflow the available space.

Say goodbye to manually booting simulators just to check if a translated word is too long. Let the math do the work.

I am prioritizing the release of the macOS/Windows desktop app based on community demand.

If you want to kill RenderFlex localization errors for good, please register on the waitlist here:https://getlaunchlist.com/pages/l10n-vision

(The Figma Exporter plugin is live and free to use right now).


r/FlutterDev • • 2h ago

Tooling I got tired of translations breaking my Flutter layouts, so I built an open-source CLI and Figma plugin to catch UI overflows early.

1 Upvotes

Hey everyone,

Running mobile engineering teams, I've noticed one consistent headache: the UI looks perfect in English, but as soon as you load the .arb files for German or Arabic, your widgets overflow, Text widgets clip, and the layout completely breaks. Usually, we don't catch this until QA or even production.

I’m working on a broader ecosystem called L10n Vision to bridge the gap between design and localization, and I just released the first two pieces for free:

  1. l10n_vision_cli (pub.dev): A command-line tool that hooks into your CI/CD pipeline to validate Flutter localization translation keys and spot potential overflow risks early. https://pub.dev/packages/l10n_vision_cli
  2. L10n Vision Exporter (Figma): A plugin to export design specs directly into a format the CLI can understand, ensuring your Flutter code actually matches the localized design constraints. https://www.figma.com/community/plugin/1685296712425620360/l10n-vision-exporter

How it works: Instead of waiting for the app to compile to see if a translated string breaks your layout, the CLI validates the keys against your UI constraints directly.

I am currently building the full L10n Vision desktop app to automate this entire visual testing process across all languages. If this solves a major pain point for you, please register here:https://getlaunchlist.com/pages/l10n-vision

I am strictly prioritizing my development time based on community demand. The more registrations I get, the faster I will push the beta release out to you all. Would love any feedback on the CLI architecture in the meantime!


r/FlutterDev • • 3h ago

Article I built… scratch it… here's an article how to create a thumbnail from a PDF

1 Upvotes

I wanted to convert a PDF page into a PNG. There's a handy pdfium_dart library that does the heavy lifting and doesn't require Flutter. It is a bit low-level, but there's nothing to fear.

Get the library and initialize it:

final pdfium = getPdfium();
pdfium.FPDF_InitLibrary();

Later, we need to call FPDF_DestroyLibrary(), see below.

Load the PDF into native memory so you can pass it to the PDFium library:

final pdf = File('...');
final length = await pdf.length();
final nativeBuffer = malloc<Uint8>(length);
final dartBuffer = nativeBuffer.asTypedList(length);
final raf = await pdf.open();
await raf.readInto(dartBuffer);
await raf.close();

I want to omit a needless copy. Because the native part cannot safely access the memory of a Dart type, we need to create a native buffer and then create a view on the Dart side and use a RandomAccessFile which has a readInto method that doesn't create its own List<int> to return the data.

Next, load the document (and don't forget to free the allocated memory and to de-initialize the library):

try {
  final document = pdfium.FPDF_LoadMemDocument(
    nativeBuffer.cast(),
    length,
    nullptr,
  );
  if (document == nullptr) throw Exception('cannot load $pdf');
  ...

} finally {
  malloc.free(nativeBuffer);

  pdfium.FPDF_DestroyLibrary();
}

If you have the PDF accessible as a file, consider using FPDF_LoadDocument instead. There's also a FPDF_LoadCustomDocument function which takes a callback it will use to ask for chunks of memory in case you don't want to load everything into memory. PDF files can be huge. I couldn't really make use of that function, though, because that would require synchronous IO. Think for example downloading only chunks of an URL using HTTP range requests.

Next, load the first page:

  try {
    final page = pdfium.FPDF_LoadPage(document, 0);
    if (page == nullptr) throw Exception('cannot load first page');
    ...
  } finally {
    pdfium.FPDF_CloseDocument(document);
  }

Next, create a native bitmap which is then used by PDFium to reader the page. I'm scaling it down so it fits a 96x96 pixel square. Feel free to adapt the imageSize:

    try {
      var pageWidth = pdfium.FPDF_GetPageWidthF(page);
      var pageHeight = pdfium.FPDF_GetPageHeightF(page);
      if (pageWidth > pageHeight) {
        pageHeight /= pageWidth;
        pageWidth = 1;
      } else {
        pageWidth /= pageHeight;
        pageHeight = 1;
      }
      const imageSize = 96.0;
      final width = (pageWidth * imageSize).round();
      final height = (pageHeight * imageSize).round();
      final bitmap = pdfium.FPDFBitmap_Create(width, height, 0);
      if (bitmap == nullptr) throw Exception('cannot allocate bitmap $width×$height');
      ...
    } finally {
      pdfium.FPDF_ClosePage(page);
    }

Just to be sure, fill the bitmap with a white background:

    try {
      pdfium.FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xffffffff);
      ...
    } finally {
      pdfium.FPDFBitmap_Destroy(bitmap);
    }

And last but not least, render the page:

      pdfium.FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0);
      ...

There's one problem, though. PDFium returns a BGRA888 image that might have a rowStride, that is, rows of pixels might not be contiuous. If we want to pass this to the Dart image library, we need to take this into account:

      final stride = pdfium.FPDFBitmap_GetStride(bitmap);
      final bytes = pdfium.FPDFBitmap_GetBuffer(bitmap)
          .cast<Uint8>()
          .asTypedList(stride * height)
          .buffer;
      final image = Image.fromBytes(
        width: width,
        height: height,
        bytes: bytes,
        rowStride: stride,
        order: .bgra,
      );
      return encodePng(image);

However, it wouldn't be that difficult to create the PNG yourself in case you don't want jet another 3rd party dependency. Writing the required PNG header is trivial, but you'd probably need to lookup how to compute the required checksum. Then use Dart's ZLibCodec, to get a ZLibEncoder and use startChunkedConversion to feed it each unstrided line of pixel, converting BGRA to RGBA by hand and prefix it with a 0 filter byte.

Finally, we need to clean up (already shown above and repeated here only for completeness):

    } finally {
      pdfium.FPDFBitmap_Destroy(bitmap);
    }
   } finally {
    pdfium.FPDF_ClosePage(page);
  }
} finally {
  pdfium.FPDF_CloseDocument(document);
}

And… we're done.

We might move everything into an isolate (using Isolate.run) so PDF rendering and PNG creating is done in the background, although I'm unsure whether PDFium likes it if you initialize it multiple times concurrently. Please try and report back :)


r/FlutterDev • • 19h ago

Discussion That innocent-looking compareTo callback might be freezing your 60 FPS timeline

21 Upvotes

A few days ago, a Flutter developer wrote a profiling post about sorting 10,000 timeline events. Under a section they called "The Original Sin", they pointed out the culprit:

items.sort((a, b) => DateTime.parse(a.start).compareTo(DateTime.parse(b.start)));

In an O(N log N) sort, that callback runs over 215,000 times for 10,000 items. On a mobile isolate, parsing 215,000 ISO strings takes 180ms+ and drops a dozen frames.

To fix it, they mapped the list to a temporary helper object with pre-parsed dates, sorted by the cached key, and unwrapped it.

That Map -> Sort -> Map pattern was actually what I posted to Usenet back in 1994 (what became known as the Schwartzian Transform). But what surprised me running benchmarks in modern Dart: package:collection's sortedBy does not cache keys either—it still ran 127,000 redundant key evaluations because mergeSortBy re-evaluates keys during merges.

With Dart 3 records, you don't even need throwaway helper classes anymore—a boxed record one-liner or simple extension method runs in 14ms (13x faster).

Have you ever caught a subtle frame stutter hiding inside a sort or compare callback?


r/FlutterDev • • 7h ago

Dart Just published png_minifier, a simple PNG minifier for Dart

Thumbnail
2 Upvotes

r/FlutterDev • • 20h ago

Plugin in_app_update_flutter (3.0.1): Android fixes; plus an iOS fix from (3.0.0) I didn't announced

14 Upvotes

I maintain in_app_update_flutter. I should have posted this when 3.0.0 came out:

3.0.0 (iOS): The update sheet was broken before this release. showUpdateForIos always failed with STORE_NOT_LOADED. There were two causes: 

  • The App Store ID was sent to StoreKit as a String instead of a number, 
  • The view controller used to show the sheet was often nil.

Both are fixed now. There are also clearer error codes: INVALID_APP_STORE_ID and NO_VIEW_CONTROLLER. Breaking: the minimum iOS version is now 13.0.

3.0.1 (Android):

  • Install statuses were wrong. A failed update was reported as installing, and a canceled one as installed.
  • Start calls could hang forever if Play didn't start the update flow. They now throw UPDATE_NOT_STARTED or START_UPDATE_FAILED, so wrap them in try/catch.

If you're on an older version, please upgrade:

in_app_update_flutter: ^3.0.1

Sorry to anyone the iOS bug affected. If you hit any problems, open an issue.


r/FlutterDev • • 1d ago

Plugin I built a gradient that follows a shape's contour and works with any ShapeBorder.

14 Upvotes

I needed a gradient border that followed the shape's contour but I couldn't find such package. They mostly just exposed a wrapper that provided such border using Linear- or SweepGradient.

The problem with LinearGradient is that it repeats colors perpendicular to its axis, so you don't get a gradient along the borders path. The SweepGradient does this better but when the shape is not symmetric, the colors don't occupy equal space.

So I built my own solution: contour_gradient

It's implemented as an OutlinedBorder, so it works anywhere you can use a ShapeBorder - buttons, chips, text fields, cards, etc.

You can also animate the gradient by changing the startOffset parameter.


r/FlutterDev • • 17h ago

Discussion Has there been any progress on Flutter typography/rendering quality?

3 Upvotes

Typography is still one of the areas where Flutter feels inconsistent/bad, which is really frustrating because it looks "cheap" even after using multiple tricks...

Even when using the exact same font, weight, size, and design specs i use on Figma, I often notice..

  • font weights looking noticeably thinner/different from the original font
  • letter spacing doesn't seem to match the actual typeface
  • text rendering feeling less sharp.. pixelated
  • differences between Figma and Flutter implementation. 1:1 specs
  • inconsistent results across iOS, Android, and Web

Mobile you can somewhat "play around" (not always), but web is really an issue at this point. As I said before, some tricks / workaround improved the situation, but it's very far away from the native... even on iPad I notice some bad quality as on web in some cases

Is there any progress or focus on this issues from the flutter team or community (?) Or have you found any better tricks that can improve the situation?

Feel like Flutter team should focus more on engine-related issues rather than spamming AI stuff at Flutter...


r/FlutterDev • • 20h ago

Tooling ScreenGuard update, finally reached 50+ downloads !!

3 Upvotes

a small update to this digital wellbeing software since my last post.

This is a prerelease version which i have tagged to be stable and slated for future release and add to main branch from the beta branch.

This highlight is less about asking you guys to try out the beta release but more in the honor of over 3+ months of development.

What makes me happy the most is that the project which i started even without a repository just to monitor my own system and usage has now come this far with over 50+ downloads 🎉☺️

This beta release now polishes on various little things which are actually necessary for a first time set up and proper user control as Now you can:

* carries forward the settings screen from previous beta release

* replaces notifications and sounds tab with general which now includes appearance settings

* you can now Stop , restart or RESET the Daemon and its preferences in settings

* Pomodoro settings which were half baked in the first release have now been added to settings to enable a looping focus mode for people at work with CUSTOM BREAK TIME

* Most Importantly (i feel) FIRST time setup issues have been fixed and in an attempt the first time ScreenGuard daemon setup pop up dialog (1st image) has been made

The Release v0.1.1 releases this October by second week, and I will continue testing the beta version to look for sectors that need polishing if any.

This is still limited to GNOME on wayland and x11 for other environments systems and primarily developed by me on my fedora 44 system and the project ScreenGuard still has a very Long way to go;

But working on it alone has given me much exposure to project sharing on platforms and most importantly a lot of invaluable experience and the true zeal of development instead of the boredom of being a 9 to 5 dev at a corporate who don't care for you.

Github beta release link: https://github.com/adityakrishnan005-a11y/ScreenGuard/releases/tag/v0.1.1-beta.4

The code for this is visible on the beta branch to keep the main working tree clean for new features additions.

Feedback from other desktop environments is widely appreciated, u can try the application out by switching to x11 session temporarily if you are using any DE which is not GNOME wayland or if u are on a DE which is primarily x11 based (Cinnamon, i3, etc) then u are good to go as they ARE FULLY SUPPORTED.

thank you everyone for your supports, criticisms and feedbacks ever since the project came online on github.


r/FlutterDev • • 21h ago

SDK I built an open-source alternative to Firebase Dynamic Links / Branch for deep links: looking for feedback

3 Upvotes

When Firebase Dynamic Links shut down last year, the options were basically Branch (sales call, $500+/month) or rolling your own. I decided to build a proper replacement and it's now live: click2 (https://click2.page). It's new, so I'm looking for early users and honest feedback.


r/FlutterDev • • 16h ago

SDK Need face AR for internal B2B tool with video calls, don't want to build it from scratch

1 Upvotes

Working on an internal B2B tool that includes video calls. Need face AR, such as real-time beautify/retouch , virtual backgrounds, that kind of thing. No interest for us to build face AR and tracking from scratch. Not our focus, just want something that works well and plugs into Flutter without too much pain.

What are people actually using for this? Looking for real experience, not names. How the integration, any issues at scale, anything you'd avoid next time?


r/FlutterDev • • 11h ago

Discussion The state management false dilemma: how much BLoC vs Signals do you actually need?

0 Upvotes

A lot of the state management conversations lately feel like people talking past each other.

Half the community wants BLoC because they need structured events, clear boundaries, and concurrency tools like debounce or restartable to handle button double-taps cleanly. But they hate the stream tax: microtask delays, cancellation boilerplate, and broken call stacks in the debugger.

The other half wants Signals because reading state synchronously and having computed properties update widgets in the same frame feels so much faster. But without a container, mutable signals end up scattered across UI files with ad-hoc boolean flags to prevent race conditions.

When you look at how modern containers work, you realize they are complementary rather than competing. A Cubit or Bloc is really just a container that holds and protects a Signal. BLoC protects how state changes on the front; Signals optimizes how state is read on the back.

For those who have tried both, do you find you miss the event boundaries when writing raw signals, or do you find streams too heavy once you get used to synchronous reads?


r/FlutterDev • • 1d ago

Video (concept) spatial UI a canvas based IDE

12 Upvotes

​

**Spatial Studio Code:** infinite canvas based IDE where code editors, files, terminals, tools, and project components exist on an infinite 2D spatial canvas instead of traditional tabs. Instead of going through multiple tabs in conventional IDE, this allows you to quickly jump on small windows.

I can't post video here, pls visit below link

https://x.com/pranavxmeta/status/2105852467955343532

Written in Flutter & {c++23}, this is working prototype on Windows.

In future, I also plan to add Figma file in Canvas, devs (we) can be more productive.

I am from AEC background, i really like AutoCAD so this is based on that idea,

(

yes it's like Figma for new gen to understand *AutoCAD was before Figma

)


r/FlutterDev • • 1d ago

SDK Lightweight Product Analytics, Session Replay, Crash/ANR/Error reporting now available for Flutter

Thumbnail
github.com
9 Upvotes

Hi Reddit!
Rejourney team here. We’re an open source library for session replay and product analytics that you can self host or use our Germany cloud. We started with initial support for React Native and Swift 8 months ago, and are using that same core for our Flutter package. Some great features includes syncs of session replays with live console logs. All release logs by a user in real time helps debug release and production issues. The console shows everything from logs, API calls, and crashes.

What makes us different is the idea that performance is our primary goal over AI features.

The package is extremely lightweight adding approximately only 1.24 MB on an uncompressed install.

Performance benchmarks show that it also takes on average 12.4 ms to capture screenshots for session replay with p99 of 28.2 ms. This means non existent UI jank to the human eye. Additional benchmarks are on our GitHub.

Github: https://github.com/rejourneyco/rejourney

For context for those that don’t know, session replay is a method to record your users and view the recordings in a dashboard. Privacy considerations also built in this package such as the ability to mask elements and text as needed, GDPR identity handling, hardcoded privacy APIs, and additional remote privacy configs.

So far we’ve been shipped with 350 production apps (more if you count self hosted users). Feel free to email us or open issues with requested features.


r/FlutterDev • • 2d ago

Dart Props to the Dart team for actually cooking something amazing lately lol (analysis_server_plugin)

60 Upvotes

Well, looks like I’ll just be strictly building apps for the next year (not that it changes my daily routine anyway), so I thought I’d share a neat trick I’ve been using for a while.

About a year or two ago, the Dart team released analysis_server_plugin. If you know how to work with AST, you don't even need custom_lint packages anymore to write custom rules.

Here’s how I’ve been leveraging it:

Instead of using clunky enums like Spacing.spacing2, I set up the plugin to throw a warning if someone uses raw pixel values that aren't allowed in our design tokens (e.g., values other than 2, 4, 6, etc.).

Enforcing design system components, like throwing a warning to use MySuperContainer (yes, I literally use this name) instead of a raw Container.

And setting it up is dead simple too. You literally just add it to your analysis_options.yaml:

plugins:

my_lints:

path: ../my_lints/

The only drawback I've found so far is that it seems impossible to raise an actual Error severity (only warnings/info). If the Dart team expands on this, it's gonna be even more god-tier.

Oh, and this would actually make a pretty solid package. I'm thinking about making one if I can find some free time. If you guys have any cool ideas for useful custom lint rules, feel free to share.

Ah, also looks like the Dart team has been interested in improving data serialization built-in lately. I might look into that and drop another post about it later. Not sure if anything is finalized yet, but seems like they're still keeping the annotation syntax. Personally not a big fan of annotations, but hey, whatever works lol.

Oh, and honestly, Dart has added so many neat syntactic sugar features lately. Like omitting enum/type identifiers so you can just write .center. It’s ridiculously convenient because now you can write stuff like.

MyText('Hello, World!', color: .textGrayBold, style: .label3)

Seriously, whoever engineered this feature deserves a free ice cream straight out of my freezer.


r/FlutterDev • • 1d ago

Discussion payment gateway

3 Upvotes

i'm building SaaS with monthly subscribtion ,

the app is on android/ios and web ..

is there way that i can pass apple review without taking the apple payment gateway?

if not and i must make the subscirbtion in the web only Is the expiry warning message safe, or is it better to show nothing?

Any problems on Google Play with the same approach?


r/FlutterDev • • 2d ago

Article tracking Flutter versions is easy

Thumbnail
flutterreleases.com
9 Upvotes

someone made website to easily track flutter versions and find release notes.

Their GitHub:

https://github.com/shankarmadeshvaran/flutterreleases.com

good work 👍🏻


r/FlutterDev • • 2d ago

Plugin flame_flutter3d: draw your Flame game in 3D and keep the game logic in Flame

3 Upvotes

A while ago I posted flutter3d, a 3D engine for Flutter. The question I got most after that was about Flame: "I already have a game in Flame. Can I add 3D without starting over?" flame_flutter3d is my answer to that, a bridge package between the two engines. MIT License, on pub.dev, and not connected to the Flame team or the Flutter team.

The easiest way to see it is a game: River Sortie, a River Raid-style shooter that runs in the browser. Everything that moves in it is an ordinary Flame component with a Flame hitbox. flutter3d only draws.

I also wrote a full write-up with an 8-step tutorial, from an empty project to a boat collecting buoys on a lake in about 170 lines:

Keep your Flame game, get a 3D world: how I bridged Flame and flutter3d

How it works

Flame keeps running the game. flutter3d's SceneSurface sits under Flame's GameWidget in one Stack, and Flame stays on top, so it still gets all the input. Both run on Flame's clock, so there's only one game loop.

Flame's 2D world is placed on a plane in the 3D scene. On a floor plane, Flame's x and y become the scene's x and z. A component that extends Object3dComponent owns a scene node, so moving it in Flame moves it in 3D in the same frame. Effects, scale, visibility, and tint follow too.

Input from Flame (keys, drags, the on-screen joystick, buttons) goes into the same input objects a native flutter3d game reads, so custom key bindings work the same in both. You can keep using Flame's own collisions, or use flutter3d's 3D physics and get its collisions back in Flame as a normal onCollisionStart.

There's more on top of that: a chase camera, 3D particles on Flame's clock, Flame sprites and text standing in the 3D scene, tapping on 3D objects, Tiled levels in 3D, and sound that comes from where things happen, in a separate package, flame_flutter3d_audio.

Limits

Flame always draws on top of the 3D layer, so a 3D object can't hide a 2D sprite behind it. Flame's collision callback has no place for a contact normal or depth, so you read those on the flutter3d side. And it's version 0.8.x, so APIs can still change between minor versions.

Things I'd like help with

If you have a Flame game, try putting the bridge under it and tell me what breaks. I checked the tutorial against the published packages and ran it on macOS, but I'd like to know how it goes on other platforms, especially Android devices I don't own.

There's also r/flutter3d, a subreddit about 3D in Flutter in general, not only this engine. Questions, bug reports, things you've built, and talk about other 3D approaches in Flutter are all welcome there.

Source: https://github.com/pleiondev/flutter3d Package: https://pub.dev/packages/flame_flutter3d


r/FlutterDev • • 2d ago

Discussion Dart pub.dev exceeds 90k packages

13 Upvotes

​

Growth of the dart package repo pub.dev continues to accelerate.

Hard to tell how much is ai and how much is increased interest in flutter.

You can see night stats here:

https://onepub.dev/Blog?id=nhavuhnofl


r/FlutterDev • • 2d ago

Discussion FLUTTER ON-SITE INTERVIEW

0 Upvotes

For those who have gone through an on-site practical assessment/interview where you’re required to bring your own laptop, what was your experience like?

I’m particularly curious about:

  • Was it a project-based task, or more of a series of smaller coding exercises?
  • Were you expected to build the app/features completely from scratch?
  • What were the expectations around using AI tools such as ChatGPT/Claude?
  • What level of Flutter/Dart knowledge did they actually test?

Would appreciate hearing from anyone who has recently gone through something similar here, especially for a Flutter/mobile developer role.


r/FlutterDev • • 2d ago

Tooling Orblit ten days on: it has a physics solver now, plus terrain, animation blends and a workspace editor

5 Upvotes

Ten days ago I said Orblit had no physics solver. It has one now. Here is what landed since, and what is still unproven.

Orblit is an open-source Dart 3D engine on Flutter, a C++ ECS and Filament.

Docs are at https://orblitengine.com and the code is at https://github.com/ChxisB/orblit.

Physics

orblit_physics is a rigid-body solver in C++ behind a Dart build hook. It depends on nothing. The repo did not exist ten days ago and is now at 0.7.0.

  • Spheres, boxes, capsules and planes. Friction, restitution and damping.
  • Warm-started contacts, sleeping, and touch, sleep and wake events.
  • Shape casts and a walking character controller.
  • Terrain as ground, built from a height field.
  • Seven joint kinds: fixed, point, hinge, slider, distance, cone and six-axis. They take limits, motors and breaking.
  • World queries: overlap, point, all hits, closest, and rays with normals.
  • Triggers, zones that override gravity and drag, conveyor belts and per-pair rules.
  • Body controls: axis locks, gravity scale, speed and spin caps, centre of mass, inertia, and a switch between fixed, driven and free. There are material presets such as Ice, Metal and Rubber, pairs that ignore each other, and 32 named layers.

Bodies are components in scene documents, so the editor edits them. I decided not to promise identical results across platforms.

Animation

  • Clips and a timeline. The Fox model plays through Orblit.
  • Blends of clips that you can save and replicate over the network.
  • Retargeting a clip onto another skeleton.
  • Cutscenes, with a Cinematics workspace in the editor.

Terrain

  • A clipmap terrain renderer with brushes, undo and picking.
  • Scatter places grass, stones and trees by rule.
  • The editor has a Terrain mode, and the gallery has a Terrain example.

Editor

  • Three columns and task workspaces: Scene, Modelling, Terrain, Animation, Cinematics and Interface.
  • Named layouts and a Focus view. It fits in 960 px.
  • Linked prefab instances with overrides.
  • Inspectors for bodies, joints, triggers and zones.

Docs and gates

  • New guides for physics, animation, terrain and cutscenes. Each compiles its Dart snippets in CI.
  • The older docs are rewritten in plain English.
  • A Claude Code skill in the repo teaches the API.
  • Lints and --fatal-infos now fail CI. So does commit lint on every commit.

The screenshots show the editor on a demo project and the gallery's Terrain example. They show the controls, not bodies moving.

What it still can't do

  • Nothing is API-stable.
  • Most of the above is proven by tests, not by a live scene. That covers physics, joints, terrain editing, blends, retargeting and cutscenes. No gallery example uses physics yet, so I have no video of a body falling.
  • Terrain has only drawn on macOS.
  • macOS is the reference platform. The iOS simulator, one Android handset and Chrome also run it. Linux works only with software rasterisers. Windows builds but has never drawn a frame.
  • Ignore rules do not cover characters.
  • Retargeting has not run on a real character pair, and feet are not pinned.
  • There is still no asset store.

The help that would matter most

  • Build something small with the physics and tell me where you gave up.
  • Run it on hardware I don't have. Windows and real Linux GPUs first.
  • Argue about the API before it freezes.
  • Send PRs. CI is strict.

r/FlutterDev • • 2d ago

Dart VeloceNet-Studio v1.2.0 – network monitoring studio (Flutter + Rust): DNS lookup, port scanner, engine hardening

1 Upvotes

Hey all — v1.2.0 of my open-source network monitoring studio is out: github.com/Cadman021/VeloceNet-Studio (GPL-3.0, Windows/Linux/macOS builds in Releases).

New since 1.0.0: DNS lookup tool (raw UDP client, A/AAAA/MX/TXT/NS), TCP port scanner, server backup (versioned JSON export + validated import), CSV export, alert log, and UI in English/فارسی/Русский/中文.

The interesting part for this crowd is the engine hardening round (mostly from community review feedback): killed a silent ICMP→TCP fallback that was corrupting stats, fixed Tokio schedule drift with MissedTickBehavior::Skip, moved status to windowed loss so recovered hosts don't stay red, wrapped all 21 FFI entry points in catch_unwind (profile is panic="unwind" now — abort used to kill the whole UI process), and added an Ubuntu CI job that caught real non-Windows lints our Windows-only CI never saw.

Got my first external contributor this release too (heatmap a11y + semantics, with tests). There are good first issues open (German locale, compact cards, file-picker import) if anyone wants in. Brutal feedback welcome as always.


r/FlutterDev • • 4d ago

Discussion The magic is gone.

310 Upvotes

I've been coding for a long time and I've been developing with Flutter for years. I've always loved it. I originally started because I wanted to build mobile apps, but since then, I've moved to Flutter Web, and building stuff in Dart has been a much better experience for me than using one of the JS platforms.

I have one main SaaS application out there whose UI is completely built with Flutter, and I didn't write a single line of code for it. I was involved in the design, code reviews, etc., but really, no coding was required of me. 100% Codex.

And all of a sudden, I feel like the magic is gone. It's Flutter, but it's not me. Flutter has become an output that seems like it could be replaced with any other output that accomplishes the same thing.

I feel like someone who just fell out of love with his high school sweetheart.

I don't even know why I'm writing this. I'm sad.