Flutter suitable for complex mobile warehouse management system?

288 views
Skip to first unread message

Laban

unread,
Aug 24, 2019, 10:31:23 PM8/24/19
to Flutter Development (flutter-dev)
We have a mobile warehouse management system with a large number of complex data entry forms, data grids with easy sorting, filtering, paging, etc.) written in .NET CF for Windows Mobile.  Since MS abandoned Windows Mobile a long time ago, we need to rewrite this app for Android industrial datacollector type devices (with built-in barcode scanners).

The current app uses old-style WinForms forms, which works very well for this type of app since it has a high density of textboxes, dropdowns, grids, etc. with very little fluff between the controls.  The user can see everything he needs and fill out fields without having to scroll up/down.  The users are mainly warehouse personnel receiving merchandise, picking, shipping, taking inventories, etc., with a very high volume of transactions.  

Even though we only need this for Android at this time, I would still prefer something cross-platform if possible.  We looked at Xamarin, but it could not handle our screen layout needs, so we dropped that.

A few additional details:
* The app will make REST-calls to a Web API back-end and also store data locally in SQLite or similar. 

* We need fine-grained control over screen layouts, including positioning of fields horizontally and vertically (including padding between textboxes, etc.).  E.g. There might be several shorter input fields horizontally on one row, followed by a couple of longer input fields on their own rows, followed by a data grid with 4-6 columns, followed by 3-4 buttons underneath the grid (used to bring up details or invoke other forms for actions specific to the selected grid record).  Having a layout manager capable of this would of course be preferred (like Developer Express' LayoutControl), we would rather not do "manual positioning" for obvious reasons (though if that is the only choice, we might need to).

* It will operate in "disconnected mode" when temporarily out of range of wifi (though this likely has nothing to do with Flutter).

* We might need to access device hardware, such as a barcode scanner (though this might not be necessary if barcode scanner can be set in "keyboard-wedge" mode, sending the data as keystrokes).

* There is around 50 different screens / forms in the app.

Lastly, it would be a huge help to have commercial-grade component libraries available, in particular a full-featured data grid which supports databinding, sorting, filtering, custom coloring of cells (and rows based) on whatever criteria, etc.

Here are a couple of screens from the current .NET CF app:

Clipboard01.jpg






Is Flutter a good choice for this type of application?  If not, other suggestions would be very welcome!!

Thanks,
Laban



Samuel Catlow

unread,
Aug 24, 2019, 11:10:30 PM8/24/19
to Flutter Development (flutter-dev)
The only issue I see you running into here is the built in barcode scanner, you would need a plugin available for that.

Sawyer Cutler

unread,
Aug 24, 2019, 11:20:27 PM8/24/19
to Samuel Catlow, Flutter Development (flutter-dev)
If not, your writing X amount of lines of coding, writing a plugin isn’t going to be over the top at that point.

Good catch though.

> On Aug 24, 2019, at 10:10 PM, Samuel Catlow <samuel...@gmail.com> wrote:
>
> The only issue I see you running into here is the built in barcode scanner, you would need a plugin available for that.
>
> --
> You received this message because you are subscribed to the Google Groups "Flutter Development (flutter-dev)" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to flutter-dev...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/flutter-dev/586e0d4a-4ceb-4fa0-a040-c63efc46da3d%40googlegroups.com.

Samuel Catlow

unread,
Aug 25, 2019, 3:14:59 AM8/25/19
to Flutter Development (flutter-dev)
I would like to see this implemented though, you would make a killing selling it to businesses.

Andy Greenshaw

unread,
Aug 25, 2019, 3:52:43 AM8/25/19
to Samuel Catlow, Flutter Development (flutter-dev)
I see 2 issues:

1. App size / number of screens/forms. This is not related to Flutter though - whatever you use, you’ll need good state management and code organisation to keep it maintainable.

2. Barcode scanner. What is the format of the barcode, and can it be scanned using the device camera? eg with https://pub.dev/packages/barcode_scan Otherwise you could write your own plugin to control an external barcode reader.

Flutter is very good fir fine grain control on laying out screens / forms.

Cheers,
Andy
 

From: flutt...@googlegroups.com on behalf of Samuel Catlow <samuel...@gmail.com>
Sent: Sunday, August 25, 2019 8:15 am
To: Flutter Development (flutter-dev)
Subject: Re: Flutter suitable for complex mobile warehouse management system?
 
I would like to see this implemented though, you would make a killing selling it to businesses.

--
You received this message because you are subscribed to the Google Groups "Flutter Development (flutter-dev)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flutter-dev...@googlegroups.com.

Wojciech S. Czarnecki

unread,
Aug 25, 2019, 5:49:36 AM8/25/19
to flutt...@googlegroups.com
On Sat, 24 Aug 2019 19:31:23 -0700 (PDT)
Laban <laba...@gmail.com> wrote:

> We have a mobile warehouse management system with a large number of complex
> data entry forms, data grids with easy sorting, filtering, paging, etc.)

I'd suggest not to ask the crowd but to perform an experiment.
Get flutter's 'hello app' and re-make (simply in main) your most dense layout.
[https://flutter.dev/docs/development/ui/layout]
Then likely make this mock live (ie. entry fields should take input and an experienced
**user** should be asked whether new ui behavior would pass with her/him)

Then and only then you may decide whether Flutter UI features are mature enough
for your use case and **for your users** and whether your developers are comfortable
with new ways to produce app layout. The "user experience" part will be really tough,
considering domain, where users got old app in the muscle-memory and any change
matters (tenth of seconds at every field sums up to seconds per order shipped what
might aflict their wages).

> A few additional details:
> * The app will make REST-calls to a Web API back-end and also store data
> locally in SQLite or similar.

Here you need not to experiment. It just works. Dart ecosystem Flutter uses
was first built for this class of tasks.

> * We need fine-grained control over screen layouts, including positioning
> of fields horizontally and vertically (including padding between textboxes,
> etc.). E.g. There might be several shorter input fields horizontally on
> one row, followed by a couple of longer input fields on their own rows,
> followed by a data grid with 4-6 columns, followed by 3-4 buttons
> underneath the grid (used to bring up details or invoke other forms for
> actions specific to the selected grid record). Having a layout manager
> capable of this would of course be preferred.

In Flutter you build layout right in code with enormous help of tools
It is all code, so you have precise (or precise enough) control. But
you for sure will have hard time to reimplement many WinForms
behaviors your users are accustomed to. Like partial selects and
focus order. (IMPO Flutter is now very rough on edges regarding
textual data input).

> LayoutControl), we would rather not do "manual positioning" for obvious
> reasons (though if that is the only choice, we might need to).

Everything in Flutter is code-positioned, and it is a strength, albeit sometimes
irritating one ;). HotReload being at developer fingers often makes this workflow
faster than entering bunch of constraints.

> Lastly, it would be a huge help to have commercial-grade component
> libraries available, in particular a full-featured data grid which supports
> databinding, sorting, filtering, custom coloring of cells (and rows based)
> on whatever criteria, etc.

Not yet. WinForms are over 20yo, Flutter is walking in public like a two ;)

Should you invest in Flutter? Its up to your architects to decide.
If you do, you will be early to the mobile/desktop/web UI off single codebase.

Hope this helps,

> Laban

--
Wojciech S. Czarnecki
<< ^oo^ >> OHIR-RIPE

Laban

unread,
Aug 25, 2019, 10:51:33 AM8/25/19
to Flutter Development (flutter-dev)
Thanks a lot for all the detailed responses!  The biggest issue that I see is the lack of a full-featured grid (grids are used heavily throughout the app).  The barcode scanner might be fine, as long as it can send the barcode data as keyboard input (this is how the current data collectors do it; of course the cursor needs to be in the right field when you scan, which is not optimal, but it works).

I realize this might be the wrong forum for my next question, but if the lack of a good grid control in Flutter makes it unsuitable for this project, does anybody here have suggestions on other options that might be better for this type of app?  Perhaps Native Script?

Worst case, we'll have to write a native Android app...

Thanks,
Laban

Paul Liu

unread,
Aug 26, 2019, 2:59:24 AM8/26/19
to Flutter Development (flutter-dev)

I think it is better to use the native. The main concern is the hardware sensor. If there is a problem with the sensor, it will be easier to debug and engineer workaround with native code.

Develop an APP is easy. It is the maintaining and debugging that will take away your profit margin. 

ps: long-ago, I worked on the Symbol mobile device project. I learned that using the battle-tested solution was difficult enough. Never touch the new and shinning tool unless it becomes boring and many people use it. You don't want your customer to call you at 3 am in the morning and asking you to find out why all the units in the warehouse stopped working.
 

Laban於 2019年8月25日星期日 UTC+8下午10時51分33秒寫道:

Rodrigo López

unread,
Aug 26, 2019, 6:27:23 PM8/26/19
to Flutter Development (flutter-dev)
Seems totally doable man... just think outside the Material design if you have to, is just rows/cols and lists, even the table view might be doable from scratch.

You just need to be neat with the project organization and code consistency for being able to manage such an amount of screens.

I made some apps in other techs using those cool Bluetooth barcode scanners, i GUESS capturing those keystrokes is easy as well with an offstage textfield (as long as it has some focus).

Reply all
Reply to author
Forward
0 new messages