Apple & Google Subscriptions: Is the Higher Commission Worth It?

When you’re trying to build an app with a sustainable business model, one of the most important decisions that you have to make surrounds the payment method that you select.  This can make or break your chances of success and have a significant impact on the scale that you can achieve.

In this article, we’re going to explore the different payment methods available and how you can select the best one for your particular situation. 

What Payment Options are Available? 

Let’s start by laying out the current ecosystem so we know what our most common choices are: 

  • Apple App Store.  Apple takes a commission of 30% on all payments processed through their ecosystem – making them the most expensive option. However, many of our clients negotiated at the rate of a 15% commission 
  •  Google Play Store. Google will charge 9-10% of all payments processed, depending on the nature of the app and other criteria. 
  • PayPal.  Accepting payments through PayPal will cost you 2.9% of the transaction plus a flat $0.30 on each transaction. 
  • Stripe.  This is very similar to PayPal, charging 2.9% and a flat $0.30 per transaction. 

The natural question is whether the higher prices are worth it?  And this can only be answered when we take into account the other factors that play a role in a sustainable and compelling proposition for your customers. 

How Do Payments Work for Mobile Apps? 

When designing your payment process, you also need to choose between a variety of different payment models that will determine how your users get charged for the mobile app they are using.  Here are some of the more common ways this happens: 

  • Subscriptions.  The most common way that users pay is via a subscription.  This is when a user pays regularly on a weekly, monthly, or annual basis for the usage of the app.  Typically, the payment processor will store the credit card details associated with that account and the transaction will go off automatically.  This auto-renewal reduces friction and helps you to maintain more recurring revenue over time.  
  • Once-Off Payments.  Users can also buy your app outright by making a once-off payment.  This is great for apps with a single value proposition where the customer doesn’t expect continual development and improvement. 
  • Coupons.  Another way that apps can work is by using coupons.  Companies can seed the marketplace with coupon codes that are obtained elsewhere – which can then be redeemed in-app.  This can be useful in various situations where the transaction is not a direct one necessarily.

All of these methods can be achieved through any payment processor but some are better suited than others.  The iOS and Android ecosystems are built for the subscription model because they have all the customer’s payment information on file – making it easier for them to buy the app without friction.  Stripe, PayPal, and others don’t have as strong a relationship with the users and therefore are better suited for one-off transactions. 

How Should I Decide Which Payment Model to Use? 

Payment Methods

Choosing the right payment model for you is going to depend on the category of app that you’re developing.  Let’s look at how different categories affect the suitable payment model:

  • Entertainment Apps.  Apps like Netflix which rely on constant updates and additions to the catalog best suit subscriptions which can be done across any of the different gateways. 
  • Productivity Apps.  If your productivity app is going to get consistent updates then a subscription might be best, but if it’s simply a utility that will remain the same – it’s probably better to do once-off payments which can be done through any gateway. 
  • Utility Apps.  These are typically once-off purchases because they have a singular and well-understood value proposition.  Stripe, PayPal, and the like can be a good option here. 
  • Gaming Apps.  Games often use in-app purchases which are better suited to existing ecosystems like iOS and Android – because there is much less friction in the moment. 
  • Education Apps.  Assuming that your curriculum and resources are going to be changing over time, subscriptions are often a good option here – even if they have a finite end date to align with examinations or something similar. 

 This list is not exhaustive but it gives you a sense of how the categories affect which payment method you should be considering.

How Should I Think About Merchant Accounts? 

When you stay outside the iOS and Android ecosystems, you’ll need to consider how to access a merchant account.  If you don’t have one yet, your best option would be to use a gateway that creates one automatically for you upon registration (like Stripe or PayPal).  It’s worth noting that you do pay quite a high commission here which can be painful if you’re a merchant with a large customer base and high product turnover. 

If you’re launching a large marketplace with lots of daily transactions, it’s probably more cost-effective to choose a gateway that doesn’t have an attached bank account.  You’d have to obtain your own one, but it would reduce your cost.  Some of the most popular options here are SagePay and PayPoint.  You’ll need to spend some time and effort configuring these – but you’ll save on the high commissions you would have paid someone to do it for you. 

So, Who Do I Choose? 

Essentially, after taking everything above into account – here is how we think about it:

Going with Apple or Google makes a lot of sense if you want to minimize friction for your customers and keep your conversion rates high.  Their one-click payment functionality is simple and well-understood, and you can benefit from their large existing audience.  However, you will pay a significant fee for this – so it needs to be worth it for you.  Identify where your target audience is and assess which one is best for you. 

 For payments that are less impulsive and more considered, Stripe or PayPal can be good options.  They are slightly slower than app stores, but they give you more control and better profitability on a per-app basis.  You’ll need to have the existing audience already to reach scale with these options.

All in all, it depends on a variety of factors that are unique to your situation.  Here at Sunflower Lab, we’ve worked with many different app developers over time and we’d love to help you make the right decision.  So, don’t hesitate to get in touch – we’d love to hear from you. 

Get a Free Quote On your Project today!

Your idea is 100% protected by our Non-Disclosure Agreement

Talk to an Expert

Related Posts

Enrich Employee Onboarding Process with Automated Email Data Extraction and Entry

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s look at an example.

Return 15% of Workday Back To Employees by Automating Patient Letter Process

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s look at an example.

Eliminate EHR Fatigue, Speed Up Claims Workflow with Process Automation for Medical Billers

In this process automation example, we demonstrate how RPA can be used to automate the process of syncing health data in the hospital…

ListWheelScrollView- Feature Image

ListWheelScrollView – Display List of Items in a Different Way

Growing along with Flutter by knowing tones of building blocks of UI called ‘Widgets’, gives us goosebumps when we get to know about a widget which is new for us. In this article we’ll be detailing a widget like this named ListWheelScrollView. Many of us must be aware about it and may have used it in our projects as well. To whom, this is new one, let’s go further and explore it along till the end. 

ListWheelScrollView is same as ListView widget but instead of plotting children widgets on flat plane view, it will display them as such they are on a vertical circular plane getting scrolled on a wheel. Look at the default rendering of both widgets as below, 

Different between these two widgets can be clearly seen from the output. Unlike ListWheelScrollView widget, ListView widget does not have any specific method which gets triggered on item selection in the middle. This is one of the advantages which is very useful to provide UI for selection of specific item. Let’s explore how we can implement it. 

There are two different ways to display items in ListWheelScrollView,  

  1. Passing list of widgets directly as children to a delegate which manage rendering lazily 
  1. Passing a delegate of ListWheelChildDelegate to childDelegate which manage & render children lazily 

Type 1 

We’ll be passing list of items using List.generate() directly to children parameter of ListWheelScrollView.  



itemExtent: 80, 

physics: const FixedExtentScrollPhysics(), 

overAndUnderCenterOpacity: 0.5, 

children: List.generate( 


(index) => Container( 

height: 60, 

width: 60, 

margin: const EdgeInsets.symmetric( 

horizontal: 12.0, 

vertical: 4.0, 


decoration: BoxDecoration( 

borderRadius: BorderRadius.circular( 



border: Border.all( 

width: 2.0, 

color: Colors.black45, 




child: Text( 

‘${index + 1}’, 

style: Theme.of(context).textTheme.subtitle2, 






This will create a list of 25 items, displaying index in the middle of Container widget starting with index no 0 (for display we’ve added +1 to the index). Parameter titled itemExtent is used to define the size of each child in the main axis. Physics define the scroll physics of this list view. Parameter overAndUnderCenterOpacity define opacity for items which is above and below centre item. As we can see we have put half opacity in our case hence item in centre is visible clearly compared to other items. See below how it looks like.  

  • REC_01 

Type 2 

Another way is where we can pass a different type of ListWheelChildDelegate to childDelegate parameter of ListWheelScrollView.useDelegate constructor to display items in different way. So, let’s go through those each.  


By use of this list items will be rendering same as what we have done using Type 1. See below code and output. Using explicit list of items, we can render this view.  



itemExtent: 50, 

physics: const FixedExtentScrollPhysics(), 

overAndUnderCenterOpacity: 0.5, 

childDelegate: ListWheelChildListDelegate( 

children: List.generate( 


(index) => _containerItem(index), 






  • REC_02 



With use of this delegate, items will be rendered in a way where a list can be looped on a passed list. At the end of the list item, first item will be render next to it so we can loop through the item list. Check code and output below. Displays items like infinite list of items by looping over them.  



itemExtent: 50, 

physics: const FixedExtentScrollPhysics(), 

overAndUnderCenterOpacity: 0.5, 

childDelegate: ListWheelChildLoopingListDelegate( 

children: List.generate( 


(index) => _containerItem(index), 







  • REC_03 



Delegate which renders same as Type 1 and first ListWheelChildDelegate but only difference is, it supplies children using Builder callback. 



itemExtent: 50, 

physics: const FixedExtentScrollPhysics(), 

overAndUnderCenterOpacity: 0.5, 

childDelegate: ListWheelChildBuilderDelegate( 

childCount: 20, 

builder: (BuildContext context, int index) => _containerItem(index), 




  • REC_04 

So, these is how a list of items can be represented in a different way with improved UI. We hope this article may give our readers something new to learn today. In out next article, we’ll explore more about ListWheelScrollView widget, stay tuned for it. Till then, let’s live with peace. 

Flutter App Development for State Management

Flutter - Bloc to Bloc communication for improved state management

Flutter has many options for state management, and Bloc is one of the popular and recommended state management options we have. While deep-diving into Bloc, we will surely require a bloc to be communicating with other blocs to traverse data and reduce new bloc creation. 

This feature called Bloc to Bloc Communication has been already provided with flutter_bloc package that we use for our Flutter Projects. Giving details at a high level, it’s a concept where, based on a state of a bloc, we can trigger events or get work from a connected bloc directly. So, Let’s get dive into it. 

We will understand this feature by creating one example of a list of items. From one bloc an item will be created and in the second bloc, we’ll fetch and display items added now. The list we’ll maintain in the listing bloc.  

First, Bloc for creating a list item will look like the below.  

Flutter Bloc to Bloc

We have just created a bloc for creating a single item and created item will be passed to success state. For real app scenario, this will be through api calls. 

After Success of creating an item, we have just simply yield the stage named CreateListItemSuccess(item: event.item), the state takes just the item that was just created.   

Now real magic will happen in second bloc, where after creating an item, we list out all items that has been created by CreateListBloc. 

In ListBloc, we will communicate with the CreateListBloc to manage all created items in a local variable and emit updated list state from ListBloc to UI to represent updated item list 

Fluttwr App Development Bloc to Bloc

Basically, in ListBloc we have an instance of CreateListBloc and stream subscription, which will be listening to the emitting states of the CreateListBloc. As the listening state is done in constructor itself it will start listening while ListBloc instance is created. 

For managing list of items, we can see that we have created one list in ListBloc as below,  

List<ListItem> itemsList = []; 

When CreateListBloc emit, updated state titled CreateListItemSuccess, subscribed stream will get this updated information and based on updated state and parameter values we receive, we’ll updated itemList with new value. For a key note, this can be managed via singleton also.  

Once we’ve added new item into list, we can add an event named GetListItems with itemsList to ListBloc for further processing.  

Next, based on added event, mapEventToState sense incoming event with data/information and emit new state titled ListSuccess with updated data.  

Now, Let’s cover from UI part. 

Flutter Development Bloc to Bloc

As we can see, we have created ListingPage to provide blocs to the ListingScreen & we have used MultiBlocProvider to do so. 

Flutter Apps Bloc to Bloc

In above code, we have one list to represent all list items. For adding new item in list, we’ve FloatingActionButton and with its onPressed parameter we’ll add CreateListItemEvent event to CreateListBloc. On the success of added new item, a snackbar will be displayed. This has been achieved using BlocListener widget. (For a note: BlocListener will used to trigger any new thing while BlocBuilder used to return UI based on updated states) 

To give proper understanding of flow of communication, we’ve added few delayed for adding new event and emitting new state at some place.  

Here, we came to the end of this Flutter – Bloc-to-Bloc Communication article. We hope readers have get new concept and things to learn today. Try out this concept, with some cool example to break down this concept more in detail. Stay tuned for future articles. Till then Peace ☮️.  

flutter bloc to bloc

robotic process automation for invoice

RPA Use Case: Automate Your Accounts Payable Workflow


Robotic process automation for invoices can rescue your employees from boring tasks, save your company from expensive mistakes, and deliver a fast and efficient workflow solution to your organization. Here is an example of how it works.


Businesses of all shapes and sizes waste valuable time and energy every day by managing their invoices by hand. The accounts payable department is bloated with the manual process of entering invoice data, creating paper invoices, matching purchase orders, and filing endlessly. To complete a single invoice, AP controllers must toggle back and forth between their email and invoice preparation application, be it Oracle NetSuite, Wave, QuickBooks, Tipalti, Xero, SAP, Microsoft Dynamics, ERPNext, Odoo, GunCash, TurboCASH, Sage Inacct, or other ERP softwares. Not only is this process time consuming, it is also riddled with human error leading to costly consequences. What’s worse is this boring, repetitive job can result in employee burnout and high turnover rates.

robotic process automation for invoice

AP Controller can add an average of 5 invoice per hours at 12 minute per invoice. This process includes which includes data entry, proofing and correcting the mistakes, and processing the invoice. A single invoice done manually can cost a company anywhere from $2.25 to $3.25 in hard and soft costs. This is a yearly cost of $36,000. Companies need a faster and cheaper alternative for invoice processing.

robotic process automation for invoice


Robotic process automation can rescue your employees from boring tasks, save your company from expensive mistakes, and deliver a fast and efficient workflow solution to your organization. Invoice processing is the perfect candidate for RPA because it is boring, repetitive, and rule-based. Software bots can be programmed to process invoice data, validate information, create business exceptions, send invoices, and even generate summary reports once they’ve finished a job—all automatically. Here’s an example of how it works using Wave Invoices as the AP application:

Here’s how it works: The software robot receives invoices as attachments in emails, creates a folder with run dates, and then downloads all the invoices. The RPA bot then opens the Wave application and logs in with secure credentials. It then creates the invoices using the data from the email attachments. If any errors are detected—like a past-due notice—the bot automatically sends an email to the business detailing the problem with the affected invoice attached. A summary report that includes the validated invoices and failed invoices is also sent automatically once the bot has finished its tasks. We used Wave in the example above, but no matter what AP application you use, RPA can be implemented to automate your specific accounts payable workflow.


Using robotic process automation to streamline the invoice workflow significantly and positively impacts the cost, time, and accuracy of the task. If we remove the knowledge workers from the typical invoice processing workflow above and replace them with digital workers/software bots, invoices can be completed in just 2 minutes at a cost of $0.40 to $0.50. And rather than spending $36,000 annually to manage invoices, the company will only expend $1,200 thanks to robotic process automation.

robotic process automation for invoice


For decades, businesses have been invoicing the same, wasteful way. Now, RPA has arrived to disrupt the process for higher yields, greater savings, and more accuracy. Accounts payable teams no longer waste away toggling between applications, manually verifying data, and sending emails. These jobs are now replaced by robots, freeing up knowledge workers for more important jobs like tracking down payments from customers. A high-functioning workforce consists of robots and humans working together to achieve maximum efficiency and output. Who’s ready to automate with robotic process automation services?

Get a Free Quote On your Project today!

Your idea is 100% protected by our Non-Disclosure Agreement

Talk to an Expert

Related Posts

Custom Software Development Services for Operational Efficiency

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s look

24/7 customer support without hiring additional staff

Market monopoly is a myth except for the very rare lucky few. For the rest of us, reducing the time to market from ideation to delivery has…

8 Challenges Affecting Software Project Management

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s

Android vs iOS Which Platform to Build Your App for

Android vs iOS Which Platform to Build Your App for?

Regina Fox

Regina Fox is a writer and editor with a passion for music, books, and technology that makes daily life just a little bit easier (she'd quite literally be nowhere without her phone GPS).

Android vs iOS Which Platform to Build Your App for

The Android vs iOS battle rages on, even after years of both operating systems going mainstream. When it comes to personal use, it will always be individual preference based on usability, functionality, and compatibility partiality. But when it comes to pursuing a mobile app development project, there are other factors at play. Not only are you concerned with creating the best product on the best platform, but you’ve also got to be conscious about your budgeting when deciding which operating system to build for. So, should you build both an Android and iOS version of your app? If not, what are the consequences? If so, which should you build first and how much will it cost? You’re not going to like this, but the answer to all these questions is: it depends. Let’s unpack the Android vs iOS battle.

Difference Between Android and iOS

There are many difference between the Android operating system and iOS as well as the devices that support them. Because of its world-wide adoptability, Android is the largest operating system in the world. It runs on devices by Samsung, LG, Google, Huawei, Nokia, and more technology hardware companies. It is mainly written in Java, C, and C++. On the other hand, iOS is designed exclusively for Apple devices like iPhone, iPad, and MacBook. It is the world’s second most used mobile operating system after Android. It was developed mostly using Swift.

android vs ios

Android vs iOS: Which is better?

Objectively, there is no better platform when it comes to Android vs iOS. Each present their own unique set of benefits compared to the other. On the other hand, they each have their downfalls. Let’s compare pros and cons of both Android and iOS.

Android Pros

  • Dominant in global market
  • More flexibility to customize app
  • Diverse phone options
  • Can side-load apps from outside the Play Store

Android Cons

  • Takes longer to develop
  • Users are slower to adopt new operating systems
  • Users are less likely to purchase apps
  • More susceptible to malware

android vs ios

iOS Pros

  • Faster, easier, cheaper to develop
  • Apple users more likely to purchase apps
  • Tight security
  • Apple users more likely to update OS

iOS Cons

  • Less popular outside western Europe and North America
  • Less flexibility to customize
  • Apps take longer to be approved in App Store
  • Fewer device options for users

android vs ios

Which Platform to Build Your App on

Now that we’ve compared and contrasted Android vs iOS, it’s time to start unpacking which platform is best suited for your app. This process involves thinking critically about four main concepts: budget, timeline, target audience, monetization strategy. All four of these factors will play a major role in deciding to build for Android or iOS.

Android vs iOS: Budget

Unfortunately, mobile app development companies aren’t going to build you an Android and iOS version of your app for one low price. Rather, there is a price associated with both and Android version of your app and iOS. This is because the app code has to be written twice—once for iOS and once for Android. Of the two, iOS is often the cheaper option for two main reasons:

1. Apple apps are written in Swift which requires less code than Android programming languages

2. iOS has fewer devices (remember the list from above?), components, and software fragmentations to account for compared to Android

The gap between Android cost and iOS cost continues to grow beyond deployment as support and maintenance plans are more rigorous and time-consuming for Android apps. What’s more, Android developers also have to be concerned with fixes bugs for users running older operating systems since Android users are less likely to update their phones—a problem Apple users don’t have to worry much about.

Android vs iOS: Timeline

In addition to generally being more affordable, iOS app development is faster than Android app developmentsome estimates put development time at 30–40% longer for Android. Like mentioned above, less code, fewer device screens to make compatible, and less work after deployment are what save software engineers time during iOS development compared to Android.

android vs ios

Android vs iOS: Target Audience

Keeping the user at the center of your app experience is the most important thing during your app development journey. And so, it is imperative to look at your target audience and consider their geographic and demographic characteristics. If you’re targeting a global audience, Android may be your best bet. But, if your audience is in Western Europe or North America, Apple may be a better choice.

iOS Demographic Fast Facts

-iOS Apple users are more likely to have more education and hold managerial positions
-iOS users tend to be younger, with a greater share of the 18–24-year-old market
Women are more likely to use iPhones than Android

Android Demographic Fast Facts

-Android is dominant in global up-and-coming markets, including in Asia, Africa, and Latin America
-Android users are more likely to work in technical jobs
-Slightly more men prefer Android than iOS

android vs ios

Source: App Annie

Monetization Strategy

Developing a monetization strategy for your app development project should be one of the first items on your to-do list. Some people opt for the investor route, others prefer a subscription program for a solid ROI. Charging users per download is another option you may consider. If you select this monetization strategy, building an iOS app will likely bring you more success over Android. Here’s why:

-iPad & iPhone users earn 40% more than the average Android user
-Apple users tend to spend more on apps
-Android users tend to be less willing to pay for apps than iOS users

Building your Android and/or iOS app

Deciding between building an Android app or an iOS app is not easy. You must consider your budget, timeline, target audience, and monetization strategy before making your decision. Ultimately, there will be tradeoffs if you decide to build either an Android or iOS app. In order to reap the benefits of both operating system, many folks opt to build them both. This is a sure-fire way to make your app available to all users!

Sunflower Lab is an iOS app development company and Android app development company with over 10 years experience. We were early adopters of both operating systems because we knew it would have a great impact on the way we live, work, and play. Our customers come from all shapes, sizes, and backgrounds to discover the power of mobile app development. To start your journey, contact our mobile app specialists today.

Related Posts

10 Essential Real Estate App Features that Enhance Your Business

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s

Guide To 7 Best Tech Stack 2023 for Software Development

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s

Why Outsource Java Development for Business Success in 2023

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s

how to use updated flutter button widgets - sunflower lab

How To Use Updated Flutter Button Widgets

Flutter has released new button widgets for mobile app developers.  Who wants to forget about RaisedButton, FlatButton, OutlineButton which provides a simple way to add buttons with or without icon on a screen for our mobile applications? To simplify it, Flutter has updated these all these to ElevatedButton, TextButton, OutlinedButton respectively with parameter as well as styling option updates. Let’s see them one by one.


Same as RaisedButton, this widget puts button with elevation on the screen. Required parameters are same, child, onPressed. Child will accept widget to be displayed on button, onPressed will accept a VoidCallBack to be called when a button been pressed/touched.

  child: Text('Elevated Button'), 
  onPressed: () { 
    	log('Elevated button clicked'); 

Having same code which we used for RaisedButton we can have same representation with ElevatedButton 

Elevated Button Flutter Button Widget

Now let’s talk about another replacement, TextButton 


This one is an alternative of FlatButton, which we’re be using where a tapped action needs to be provided for Text being displayed on screen without any border, elevation or fancy decoration. Required parameters are same child and onPresseed.

  child: Text('Text Button'), 
  onPressed: () { 
    log('Text button clicked'); 

Button will be displayed as shown below.  

Text Button Flutter Button Widget

Let’s talk about last, replacement if OutlineButton. 


We were using OutlineButton to display a tap action on screen with outline border, without filling area occupied inside this outline border. Required parameters are same, child and onPressed.

  child: Text('OutlinedButton Button'), 
  onPressed: () { 
    log('OutlinedButton button clicked'); 

Button will be displayed as shown below. 

OutlinedButton Flutter Button Widget

So, these was the basic details of replacement of button widgets available in Flutter to display different type of buttons for out mobile applications.  

Additional Note

Button with icon which we’re using earlier are same with these updated widgets as well. To have an elevated button with icon use ElevatedButton.icon widget and pass required parameters. Same for outlined button and text button, use OutlinedButton.icon, TextButton.icon respectively. Below are the representations how they will look.

elevated button outlined button text button Flutter button widget

Next, now let’s talk about styling.  


Styling can be provided to content being displayed on button and as well as to button itself. Previously, we were having different parameters at individual button level to decide different styling properties, but now this can be done by giving a value of ButtonStyle class to style parameter of these updated material buttons. Let’s check them out one by one.

Note: This all property works same for TextButton and OutlinedButton as well. For simplicity, only ElevatedButton is represented in further article.


This will define styling of text being displayed on button. It accepts a value of TextStyle class to provide text styling options via MaterialStateProperty. See below.

textStyle: MaterialStateProperty.all<TextStyle>( 
    fontSize: 24.0, 
    fontWeight: FontWeight.w500, 

elevated button flutter button widget styling

Colors (backgroundColor, foregroundColor, overlayColor, shadowColor) 

These options are available to have required color for specific place.  

  • backgroundColor : for button background. 
  • foregroundColor : for content being displayed on the button. 
  • overlayColor : for ripple being displayed when tapped or long pressed. 
  • shadowColor : for shadow of the button when elevation is greater than 0. 

All of these options, accepts value of Color class via MaterialStateProperty. See below code. 

backgroundColor: MaterialStateProperty.all<Color>( 
foregroundColor: MaterialStateProperty.all<Color>( 
overlayColor: MaterialStateProperty.all<Color>(, 
shadowColor: MaterialStateProperty.all<Color>(, 

elevated button flutter button widget styling 2


To provide z index height (elevation) to button we can assign any positive value to it.  

elevation: MaterialStateProperty.all<double>(5.0),

elevated button flutter button widget styling 3


To give spacing between button border and content being displayed above it this property can be used. It accepts value of EdgeInsets via MaterialStateProperty. 

padding: MaterialStateProperty.all<EdgeInsets>( 
    horizontal: 20.0, 
    vertical: 15.0, 

elevated button flutter button widget styling 4


Using this parameter we can even customize border of a button being displayed on the mobile screen. Pass value of BorderSide class via MaterailStateProperty as below and see changes. 

side: MaterialStateProperty.all<BorderSide>( 
    color: Colors.yellow, 
    width: 3.0, 

flutter button widget


This parameter is an interesting one as it gives us so many options to be used to have different shapes for a button. See options below,  


shape: MaterialStateProperty.all<OutlinedBorder>( 
    borderRadius: BorderRadius.circular(20.0), 

flutter button widget


shape: MaterialStateProperty.all<OutlinedBorder>( 
    borderRadius: BorderRadius.circular(20.0), 

flutter button widget continuous border


shape: MaterialStateProperty.all<OutlinedBorder>( 
    borderRadius: BorderRadius.circular(20.0), 

flutter button widget

Circle Border

shape: MaterialStateProperty.all<OutlinedBorder>( 

flutter button widget

See, this is how this shape parameter changes shape of a material button with different representations.  

So, these are all what we have for updated Flutter material buttons. We hope you learned something new! Stay tuned for our next how-to article. 

Related Posts

10 Essential Real Estate App Features that Enhance Your Business

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s

Guide To 7 Best Tech Stack 2023 for Software Development

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s

Why Outsource Java Development for Business Success in 2023

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s

Mobile Application Development Company In New Jersey - Sunflower Lab

#1 Mobile Application Development Company in New Jersey

Regina Fox

Regina Fox is a writer and editor with a passion for music, books, and technology that makes daily life just a little bit easier (she'd quite literally be nowhere without her phone GPS).

Mobile Application Development Company In New Jersey Sunflower Lab

What Makes Sunflower Lab Different From Every Other Mobile Application Development Company in New Jersey?

There are many mobile app development companies in New Jersey. In fact, the entire state is a bustling hub for information technology, thanks to the New Jersey Institute of Technology. Business owners and entrepreneurs in and around the Garden State who are looking to take their company or idea to the next level certainly have their work cut out for them when it comes to finding the right mobile app development company in New Jersey. To make it easier, we’ve compiled a list of identifying factors you’ll want to look for on your hunt for your technology partner.


Mobile applications have to be beautiful, that is a given. But, beauty is more than interface deep. To truly make an impact on the market, well-designed mobile apps have to be built with the user in mind. In other words, there has to be an emphasis on the user experience. Being UX-focused allows us to turn code into a genuine human experience.

app development

High-End Engineering

Code is the very essence of every custom software development. But you’d be surprised at the integrity of it coming out of some IT companies. What you need is good, clean code that you own the rights to. This secure, robust data will keep your mobile app working seamlessly over a long period of time. According to CodeGrip, here are some qualities of strong code: 

  • Good readability
  • Easy to edit
  • Sustainable
  • Easily transferred
  • Decreased technical debt

Long-Term Partnership Goals

If you think you’re only going to need a mobile app development company to design, develop, and deploy your product, you have to think bigger. Who will scale your app when your business grows? What about when bugs arise, who will fix them? What you need is a long-term tech partner. Look for a mobile app development company in New Jersey who can commit to communication, support, and service even after your product is deployed.

Learn About Support & Maintenance ProgramsLearn About Retainer Model Programs


Not all mobile applications are created equal. You’ll want to take a deep dive into the mobile app development services offered by the company you’re researching. Here are a few things every good mobile application development company in New Jersey should include in their mobile products:

Phone & Messaging

One-touch dialing within the app, push notifications & sounds, text and in-app messaging.

Audio/Video Calling

Twilio Integration connects your app with the global communication network through APIs.


Touchscreen signature capture and storage for approvals and confirmations.

In-App Purchasing

Selling direct to consumers from within the app, Apple and/or Google Payment processing.

GPS Navigation

Mapping integration, routing based on current location and system addresses, and real-time location tracking.

Barcode/QR Scanning

Built-in scanning and processing capabilities using the device’s camera.

Payment Processing

Stripe and PayPal connections allow payments to be completed in app.

Local Storage

Keep your mobile app data safe with local storage.

Finding a Mobile App Development Company in New Jersey

Armed with all of these tips and tricks to find the right mobile app development company in New Jersey, it’s time to start your search! Clutch and GoodFirms are two great places to begin your journey, as both of these third-party listing sites are committed to vetting only the most qualified app development companies. We wish you the very best of luck on your hunt for your tech partner. Here’s to a brighter future!

About Sunflower Lab

Started on Sunflower Road in New Jersey in 2010, technologists and friends Ronak Patel and Yash Patel saw an opportunity to create products that help companies transform how they do business. So, with a single Macbook and a shared dream, they landed their first client: Forbes Magazine’s first iPad application called Forbes Top 100. Today, Sunflower Lab is the best android app development company and ios app development company with 75+ engineers and technologists across the globe who share our vision of building technology today for our clients’ better tomorrows.

Local Brands That Trust Us

Related Posts

10 Essential Real Estate App Features that Enhance Your Business

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s

Guide To 7 Best Tech Stack 2023 for Software Development

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s

Why Outsource Java Development for Business Success in 2023

Employee expense receipt management is the perfect process for RPA because it is logic based and redundant. Let’s


Sunflower Lab Named a Top Mobile App Development Company in Columbus, Ohio

Top Mobile App Development Company in Columbus, Ohio

Sunflower Lab has been named a top mobile app development company in Columbus, Ohio. The Manifest recently released their list of top 20 software companies in Ohio and placed Sunflower Lab at #2. We are a mobile app, web app, and custom software development company headquartered in Columbus, Ohio. Being in Columbus means we compete with some of the most elite mobile app development companies in the U.S. However, we execute in a way others do not.

top app development company in columbus sunflower lab

How We Became a Top Mobile App Development Company in Columbus, Ohio

User-Centric Design: Over the last decade, our designers have been recognized by agencies like for being leaders in mobile app UI/UX. Our products include stunning design and striking features that set them apart from the competition. But what makes them truly unique is the experience of using them. We put the user at the center of all of our products and digital experiences. Being UX-focused allows us to turn code into a genuine human experience.

We are a software partner, not a vendor: Almost any IT firm can build mobile apps,  we build relationships. We understand a client’s business and how it fits into the marketplace first. We believe in partnering with our clients on their projects and using our wealth of knowledge to bring their organization success. Being in the industry, we know how much IT matters to a company and their future. We have seen the impact over and over again. Successful IT matters. It changes companies, communities, markets and the world. We are proud to be a part of that change.

Commitment to life-long learning: At Sunflower Lab, we invest heavily in technology training and building emerging technology concepts because we truly believe in the positive impact technology will create on the world. Our brilliant pool of engineers and developers are committed to life-long learning in order to deliver the most cutting edge technology trends.

About The Manifest

The Manifest is a business news and how-to website that compiles and analyzes practical business wisdom for innovators, entrepreneurs, businesses, and consumers. Their mission is to “gather and verify the hard data, expert insights, and actionable advice that you need to build your brand and grow your business – to provide the practical business wisdom that manifests in your success.”

When it comes to mobile app development, The Manifest reports the following data:

Building a mobile app is expensive. In fact, it can cost $10,000 to $150,000, unless you want an out-of-the-box solution with a DIY app builder. So, choosing the right app developer is important because it can save you time and money and result in an app that makes your business stand out.

As you begin the process of hiring an app development company, remember to define the type of app you want before starting conversations with developers. How complex your app idea is will determine your budget and the skill level you need in an app developer. Then, once conversations begin, ask for portfolio items, reviews, and references. Be sure to bring up timeline, too, so you align on expectations.

Overall, with about 90% of time on mobile spent in apps, investing in a mobile app for your business may help attract customers and get your brand in front of more people.

Client Reviews