Nowa­days, the­re are many pro­gram­ming lan­gu­ages and fra­me­works to cho­ose from. The cho­ice of a par­ti­cu­lar one depends on many fac­tors like busi­ness goals, ava­ila­ble reso­ur­ces, time, the type of appli­ca­tion, and its requ­ire­ments. In this case stu­dy, we’d like to show our jour­ney from cross-plat­form deve­lop­ment based on Flut­ter to a nati­ve pro­gram­ming lan­gu­age approach.

Our custo­mer PRO­XESS GmbH

PRO­XESS GmbH is a leading pro­vi­der of docu­ment mana­ge­ment and pro­ces­sing sys­tems with a wide tool­set of solu­tions serving over 2.800 custo­mers and 100.000 users.

Pro­of of con­cept “PRO­XESS Now”

During the pan­de­mic, many people were wor­king remo­te­ly. But prin­ting, scan­ning, and uplo­ading hun­dreds of docu­ments on a daily basis can be quite a chal­len­ge when wor­king from home and witho­ut the right toolset.

That’s why our custo­mer deci­ded to deve­lop a user-frien­dly mobi­le scan­ning appli­ca­tion. The App was sup­po­sed to work on both Andro­id and iOS, allow to log into the sys­tem using a QR code that can be down­lo­aded from a web por­tal, allow users to take pho­tos of a docu­ment, send the docu­ment to the appro­pria­te data­ba­se, and save it toge­ther with cor­re­spon­ding attri­bu­tes. For this, we cre­ated a pro­of of con­cept based on Flutter.

What is Flut­ter and why did we cho­ose it?

Flut­ter is an open-sour­ce fra­me­work inven­ted by Google for cre­ating appli­ca­tions on vario­us ope­ra­ting sys­tems. Ini­tial­ly ava­ila­ble only for Andro­id devi­ces, it cur­ren­tly allows you to build appli­ca­tions also for iOS, macOS, web brow­sers, and more.

Flut­ter allows for effi­cien­tly imple­men­ting attrac­ti­ve-looking, respon­si­ve user inter­fa­ces. It ena­bles the simul­ta­ne­ous use of UI com­po­nents and design pat­terns from vario­us plat­forms — inc­lu­ding Mate­rial Design wid­gets deri­ved from Google design lan­gu­age and the Cuper­ti­no set, deri­ved from Apple’s ope­ra­ting systems.

You can read more abo­ut Codelab’s appli­ca­tions based on Flut­ter in the pre­vio­us artic­le.

The most signi­fi­cant advan­ta­ge of Flut­ter apps is one code base for all plat­forms. This means that the deve­lop­ment and testing are faster, more featu­res can be added to the sco­pe, and the main­te­nan­ce is easier and less time-con­su­ming. Using Flut­ter can give you the edge in effec­ti­ve­ly balan­cing pro­ject time, cost, and scope.

But is Flut­ter always the best cho­ice? Is it bet­ter than nati­ve apps? Our use case sho­wed that some­ti­mes you have to think twi­ce befo­re going for a cross-plat­form solution.

The final pro­duct “PRO­XESS Now”

Deve­lo­ping a pro­of of con­cept in Flut­ter at first gave us alre­ady a lot of insi­ghts and led us to the conc­lu­sion to go for a sepa­ra­te deve­lop­ment on iOS and Andro­id inste­ad of a cross-plat­form appro­ach for this spe­ci­fic use case. And here is why:

  • iOS-level build-in features

iOS has a gre­at build-in solu­tion for docu­ment scan­ning (VNDo­cu­ment­Ca­me­ra­View­Con­trol­ler). As scan­ning was the cru­cial featu­re of the mobi­le appli­ca­tion we wan­ted it to have seam­less func­tio­na­li­ty and stron­gly recom­men­ded the iOS build-in solu­tion. iOS also pro­vi­des other impor­tant featu­res that were cru­cial to our solu­tions such as docu­ment pre­vie­wing (QLPre­view­Con­trol­ler) and bio­me­trics (Face ID, Touch ID).

  • Andro­id third-par­ty libraries

Third-par­ty libra­ries and pac­ka­ges have a signi­fi­cant impact on softwa­re deve­lop­ment as they are usu­al­ly open-sour­ce, pre-tested, and easi­ly ava­ila­ble. Sin­ce Flut­ter is still rather new for mobi­le app deve­lop­ment, the ava­ila­bi­li­ty of such pac­ka­ges and libra­ries is limi­ted. The fra­me­work is still in a gro­wing sta­ge and con­ti­nu­ously impro­ving. It’s hard to pre­dict if the­re will be any libra­ries mis­sing in the futu­re. In our case, we used the fin­ger­print bio­me­tric authen­ti­ca­tion pro­vi­ded by the Andro­id fra­me­work. On the other hand, we had to use an exter­nal solu­tion pro­vi­ded by Pixel­ne­ti­ca for scan­ning the documents.

  • A gro­wing sco­pe of func­tio­na­li­ties for futu­re rele­ases of the application

At pro­ject kick-off, we deve­lo­ped a cle­ar pic­tu­re and deta­iled under­stan­ding of all requ­ire­ments and func­tio­na­li­ties for the ini­tial ver­sion of the pro­duct. Howe­ver, the futu­re featu­re set was very unc­le­ar and many ide­as were flo­ating aro­und. In order to assu­re a futu­re-pro­of solu­tion and redu­ce the risk for fur­ther deve­lop­ment, a nati­ve deve­lop­ment appro­ach seemed the best move.

  • Possi­ble delay­ed adju­st­ments for new Andro­id and iOS ver­sions — Flut­ter deve­lo­pers must take time to adjust

New featu­res imple­men­ted in most recent iOS or Andro­id ver­sions nor­mal­ly are not ava­ila­ble for Flut­ter at the time of rele­ase. It takes time for Flut­ter deve­lo­pers to adapt and adjust the­ir pac­ka­ges and libra­ries. It might be not rele­vant for most of the pro­ducts (sin­ce apps must be bac­kward-com­pa­ti­ble) but it has to be taken into con­si­de­ra­tion when cho­osing tech­no­lo­gy for the next mon­ths or years.

  • Deve­lo­pers availability

Deve­lo­pers’ ava­ila­bi­li­ty is also an impor­tant fac­tor to con­si­der befo­re star­ting a new pro­ject. In gene­ral, more nati­ve (iOS, Andro­id) deve­lo­pers are ava­ila­ble than people spe­cia­li­zed in Flut­ter development.

Wrap­ping Up

Thanks to the custo­me­r’s trust in our expe­rien­ce and exper­ti­se, the deve­lop­ment was a big suc­cess. “PRO­XESS Now” is ava­ila­ble on Google Play and the iOS App Sto­re. It sim­pli­fies the scan­ning, uplo­ading, and pro­ces­sing of docu­ments in a DMS whe­re­ver you go.

The­re are many types of mobi­le appli­ca­tions on the mar­ket, and dif­fe­rent fra­me­works and tools ava­ila­ble. The cho­ice is often more com­plex than betwe­en Flut­ter and nati­ve languages.

Not sure what is the best appro­ach for your pro­duct? Then bet­ter con­sult Codelab’s expert developers.