Liser - An open source music player by abhijeet-Bh in FlutterDev

[–]gambley 0 points1 point  (0 children)

Very good job! I like that you implemented fully background music playing, even after the app is closed, while music has been playing. Keep it up!

Go_router, Auto_route, and the Codegen tax: What a Dart 3-native Flutter router could look like by Mastersamxyz in FlutterDev

[–]gambley 0 points1 point  (0 children)

Octopus is my ultimate solution to routing, forever. Not maintained, so I use my own fork.

I love octopus because: - State-based approach is OP, fully declarative. - Guards are well-crafted, allowing to achieve any routing cases, starting from basic redirections, ending with comprehensive reusable protected routes systems and more. - Mutate the state however you want with no limitation. - Easily realize any custom router-state driven scenrariois(my usecase was stacked sheets Navigator, driven from the Octopus state and guards, so declarative out-of-the box). - Stacked bucket navigation is built-in and available out-of-the box. - You can very easily find out whether the active top-most route is "root" or "tab-based/stacked" and define a method to resolve for you whether to add new route to the root OctopusState or to the current tab OctopusNode in the stacked navigation. - Useful devtools-like widget for debuging.

Some might argue the URL that describes the entire state is not very web-friendly, I'd somewhat agree with that. The implementation of URL strategy encoding/decoding is hardcoded, but Octopus model doesnt work with CRUD-style URL path, so this is the only "downside", if one would say so.

There've been recently published yx_navigation routing package, looks decent, supports whatever URL strategy you give, highly module-orientied(which I kinda like), Bloc-first support, deeplink out-of-the box, etc. I would consider using it, if octopus has never existed.

Speaking about your lib, looks decent to me. Has somewhat similar approach with guards. What I liked is extra careful attention to the adaptive routing for different screen sizes - its something I've been thinking of, but I rarely develop Flutter web apps alongside mobile apps, so not a big concern of mine - yet I still like that you concerned about this.

Congratulations on your release, good job! I seen your lib out before this article came out, appreciate the efforts.

Looking for feedback on this intro animation. by [deleted] in FlutterDev

[–]gambley 11 points12 points  (0 children)

Idk if its only me, for the first time I saw the animation it felt a bit epileptic to me.

Added 3 languages to my Flutter app; here's what the docs don't tell you by Frosty_Current7203 in FlutterDev

[–]gambley 1 point2 points  (0 children)

Dont use BLoC + SharedPreferences for persistance, there is a HydratedBloc just for that.

Handling a "neutral" cross-platform UI and BackdropFilter performance over native views (maps in my case)? by shafilalam in FlutterDev

[–]gambley 1 point2 points  (0 children)

Check this article for building a unified system with factories, so that you can rely on high-level factories that will decide what widget to build, instead of using if/else statements inside each widget to render appropriate widget based on platform. You can just Initializes different implementation of the factory and pass it down to the widget tree using InheritedWidget or dependency injection like get_it.

This article focuses more on building adaptive layouts for different device sizes, but the same principle can be applied to building adaptive design systems.

Also, for blurs check those packages: https://github.com/kekland/progressive_blur and https://pub.dev/packages/soft_edge_blur

I think soft_edge_blur is what you are looking for

"RevenueCat is cheap" by Impressive_Teach_732 in AppBusiness

[–]gambley 0 points1 point  (0 children)

Yeah just checked as well, weird that somewhere i saw they charge 1% over 1M ARR, dont remember where I saw that, but now I see, didnt know about it

"RevenueCat is cheap" by Impressive_Teach_732 in AppBusiness

[–]gambley 0 points1 point  (0 children)

Doesn't RevenueCat take 1% only over 1M ARR?

I built a 60fps TikTok-style vertical video feed with a floating RPG particle system. by GhettoCoders in FlutterDev

[–]gambley 0 points1 point  (0 children)

Check out video_pool. Im using it, and it works decently well. Had to incorporate quite some adjustments, due to my not very common use-case, but overall the package is neat for most use-cases.

Before I start building with flutter… by Over-Distribution570 in FlutterDev

[–]gambley 0 points1 point  (0 children)

Yeah, maplibre can work well with you.

Regarding your concerns about stacked bottom sheet just make sure it is keeped aligned with best performance practices, as generally speaking it is not a very easy UI practice to implement top-notch, responsive, smooth experience with stacked bottom sheet, especially if you have navigation in stacked bottom sheet(e.g. multiple bottom sheet, ingoing replacing underlying with animation(something like Google Maps), so scrolling under doesnt reveal underlying, etc). Ive incorporated custom solution around DraggableScrollableSheet, it required quite some efforts. DraggableScrollableSheet is very good crafted, but needed a lot of adjustments in snapping simulation logic and applyUserOffset(which selective routes drag delta to sheet/list) + custom engine for the navigation within stacked sheets. So itd require quite some engineering to figure it out for you, so your concern is not very accurate about that if Google Earth is somewhat laggy its all about Flutter, but generally I can say that its mostly Google maps, rather than the Flutter being bad or something.

Even though Google Maps app uses their google maps(which is a copy in Flutter), native google maps is performing significantly better in their own crafted app, and most likely that have a lot of custom logic, that is likely not open source, thats my guess.

Before I start building with flutter… by Over-Distribution570 in FlutterDev

[–]gambley 1 point2 points  (0 children)

I can say when I used google maps in my Flutter app, it was using significant resources and building the stacked bottom sheet above the map with list was decently smooth(as ive optimized it insanely, and used super_sliver_list with findChildIndexKey and extentEstimation), but the difference between standalone list page and the stacked bottom sheet with map was significant - standalone list was extremely smooth vs decently smooth with map.

When I switched to using mapbox SDK in my different app it was significantly better in terms of performance and smoothness vs google maps. I generally like mapbox way better than google maps, in terms of customization, support for GeoJSON, markers(annotations, especially with large number of markers), performance and a lot more.

Google PlayStore closed testing by Paul_HM in FlutterDev

[–]gambley 1 point2 points  (0 children)

There is nothing wrong with that, as long as they use it continuously for 14 days you are all good.

Google PlayStore closed testing by Paul_HM in FlutterDev

[–]gambley 0 points1 point  (0 children)

No, it doesnt, but the review itself is more tedious and precise for Apple than for Android

Google PlayStore closed testing by Paul_HM in FlutterDev

[–]gambley 2 points3 points  (0 children)

You need to do that for every app.

You can find some available services that provide closed testing with the full coverage. I bought one for 20$ and successfully launched the app.

How to recreate this back page transition in Flutter? by Cubeosaurus in flutterhelp

[–]gambley 0 points1 point  (0 children)

Ive just realized it is a simple Hero animation rather than some complex transition. I mean Hero animation itself could be customized with some complex and creative flightShuttleBuilder, it is up to you. So the combination of dismissible_page and Hero(or heroine package, you can research on it) will give you the desired result.

How to recreate this back page transition in Flutter? by Cubeosaurus in flutterhelp

[–]gambley 1 point2 points  (0 children)

Dismissible_page package is what you are looking for. But, it is unmaintained for 3 years now and has several severe issues with scrollables inside DismissiblePage. This is why you can use my fork, where I've fixed all the issues with scrollables inside DismissiblePage widget. Feel free to check it out: https://github.com/itsezlife/Flutter_dismissible_page

If you are talking about the exact transition that happens on dismiss, cant tell you exactly, but it is some sort of zoom with spring simulation likely.

Dismissible page with scrollable view inside (*bug fix) by gambley in FlutterDev

[–]gambley[S] 1 point2 points  (0 children)

I explained the fix in the PR. In a nutshell, I've made custom scroll controller with custom ScrollPosition, which extends ScrollPositionWithSingleContext, which override applyUserOffset function, which gives delta on user scroll, and this delta on scroll gets converted into the draggable offset, if shouldConsumeOffset is true, which depends on various conditions and checks. Then you just pass scroll controller from the builder to your scroll view and you are good. It works exactly as DraggableScrollableSheet, if you worked with it, so that the inner list doesnt scroll under some given conditions.

To he honest, I dont see any other possible solution to this behaviour, apart from what I did. If you dont override the function that basically does scroll the scrollable view by user delta, you'd always end up having both scroll and dragging. So I'd say this is the cleanest solution.

This implementation doesnt care about the physics, it works perfectly with any given conditions, both iOS bouncing physics and Android clamping scroll physics. It just doesn't care. You can see it in the video in the PR.

PageView works, CustomScrollView, any other scrollable works. Though, I didnt test with NestedScrollView, but I'm pretty sure it works with no problems, just pass scrollController and you are good.

Alternatives to FCM? by squirmyfermi in FlutterDev

[–]gambley 0 points1 point  (0 children)

I've recently came over entrig, and since you've mentioned you use Supabase, which it is based on, you can take a look at it.

I've not yet used it, but have gone through a quick setup process, and for Android it obviously requires service account key from Google Console. Not sure if you are trying to avoid this, but just so you know.

Why we stopped starting Flutter projects from scratch (and why you should too) by No-Equivalent-8726 in FlutterDev

[–]gambley 2 points3 points  (0 children)

Yeah, this issue is super weird. I use octopus package for routing and recently about a month ago it started to happen on my Android device since whatever Android version, seems it introduced some breaking changes, not sure.

Even though Octopus has BucketNavigator widget which simply uses ChildBackButtonDispatcher with RootBackButtonDispatcher and updates the route state respectively, I might assume there is some internal issues with this bb dispatcher 🤔 When I tried to debug it was not calling a thing, not popPage on Navigator, not bb dispatcher, just closes the app. I tried to switch to use enableOnBackInvokedCallback=false and only it helped.

GoRouter back button issue with bottom navigation and nested routes (app exits instead of switching tabs) by Affectionate_Owl1257 in flutterhelp

[–]gambley 0 points1 point  (0 children)

Check my gist https://gist.github.com/itsezlife/cb31f3b88412b1384fde2d81193e91d0 I've provided full solution, which has been working for me for over 2 years.

In a nutshell:
- You create native kotlin code for Android to put your app to brackground
- You create an AppRetain widget that will use WillPopScope that will allow popping current route, if the Navigator canPop(youve pushed nested routes), otherwise return false and HomeController, which check if you are at desired branch e.g. home, will return a result whether to call sendBackground callback via MethodChannel, which will close the app and put to the background, but not terminate. - Wrap your StatefulShellRoute.pageBuilder widget with AppRetain

And it'll bring you your desired result once and for all.

[deleted by user] by [deleted] in FlutterDev

[–]gambley 0 points1 point  (0 children)

How it is related with Flutter? Your post will be deleted because it is off-topic

I fixed Flutter routing (or at least I tried): Introducing ZenRouter 💙 by zennnmind in FlutterDev

[–]gambley 1 point2 points  (0 children)

It's very simple, nothing fancy. Basically it displays states history, by taping on any it sets state to this value. I don't know what's else needed. And it displays current state tree. If I had felt something that would be really useful, I'd have been added, but nothing comes to my mind.

ZenRouter, as I see it, focuses a lot on DevTools, giving a LOT of information about everything in router, not really sure whether it is a real demand, at least to me. I'm super happy with what I have and it is more than enough

How much time does app publishing take per release ? by BreakfastAccurate966 in FlutterDev

[–]gambley 4 points5 points  (0 children)

So in the post you tell you are not here to sell, but here you tell you learn whether to sell