To ensure an app’s success, it is crucial to design and implement a marketing campagin 💭 Here are some essential strategies to think about when launching an application 📲
This document introduces Bricks, which are templates created with Mason that automate repetitive coding tasks to increase development efficiency. Bricks can be registered on GitHub BrickHub or locally in a project. Several example Bricks are described, including ones to create a UI package, new feature using BLoC and routing, a clean Flutter package, and a model class with copyWith, Equatable, and JSON serialization functionality. Developers are directed to brickhub.dev to find and use available Bricks.
IT Staff Augmentation: made simpler with SomnioEugeniaGallo1
#staffaugmentation is an effective way to get the work done in time and with the right talent for high-scale projects in industries like IT 💪
Discover all the benefits of using this model and expanding your team!
With Somnio as your partner, you’ll have Flutter Experts who can contribute to your development team to help you reach deadlines, increase productivity, and tackle the most challenging projects 💪 📈
👉 Drop us an email at hello@somniosoftware.com and schedule a free 30-minute consultation
#staffagumentation #it #flutter #flutterdev #flutterdevelopment #softwaredevelopmentcompany #ITcompany #flutterapp #fluttercommunity
Yesterday, we hosted the fourth edition of Flutter Sessions 🔥 with Flutter Medellín 🇨🇴
The event consisted of two talks regarding Testing and Performance improvements 📲 in Flutter 💙 We were pleased to welcome Daniel Herrera Sanchez, organizer of Flutter Medellín, for a talk on Flutter performance improvement and measurement 🤗
📷 Here you can see Fabian Bardecio, speaker of the talk “Testing Flutter apps effectively”, in collaboration with Gonzalo Sosa rehearsing his talking points before going live 🚀 — even Dash stopped by to watch 🥹
Big thanks to everyone that joined the meetup, and for your great questions 🙌
It’s always a pleasure to meet fellow #Flutter enthusiasts. We can’t wait for the next edition of #FlutterSessions 💪
You can watch the event on Flutter Uruguay’s YouTube Channel 👉 https://www.youtube.com/watch?v=x_UQulu-dOc
#fluttersessions #flutteruruguay #flutterbygoogle #fluttercommunity #flutterdev #flutterdeveloper #flutterapp #flutterdevelopment #flutterdevelopers #meetup #fluttermeetup #techmeetup
When you choose to develop an application or web, you have to consider several factors 🔎
One of them is the team in charge of development. You can choose to expand your in-house talent or partner with a team dedicated to your demands 👩💼🧑💼
To develop your app from scratch, we recommend a team that is 100% customized and specialized to your needs:
✅ They are 100% focused on your project
✅ Adapted to your specific needs
✅ Permanent communication without cultural barriers
Somnio’s Dedicated Team operates as an addition to your business. We’ll partner with you on your priorities and can leverage our in-house skills, toolkits, and processes to achieve your goals.
The main difference between const and final is that const can be considered as a compile-time constant, while final can be considered as a run-time constant. So when you want the constant value, and you are aware of the value to be assigned, at the compile-time itself, you can use const! But let’s say you want a constant value, but you don’t know its value at compile-time, then you can use final!
A StatefulWidget has a complete widget lifecycle and goes through the following stages:
createState(): In stateful widget, the 1st method that is called is createState(). The createState() method returns the instate of the state of the Stateful widget.
initState(): This is the first method called after the constructor of the Stateful Widget. It is called whenever the screen or widget is added to the widget tree! Here you can initialize your variables, objects, streams, AnimationController, etc.
didChangeDependencies(): It is always called for the 1st time after initState() . You can include few functionalities like API calls based on parent data changes, variable re-initializations, etc.
build(): The build method is the one that shows and renders the UI part to the user. Whenever you want to update your UI or if you click hot-reload, the Flutter framework rebuilds the build() method!
didUpdateWidget(Widget oldWidget): If the parent widget changes its properties or configurations, and the parent wants to rebuild the child widget, with the same Runtime Type, then didUpdateWidget is triggered. This unsubscribes to the old widget and subscribes to the configuration changes of the new widget!
setState(): This method notifies the Flutter framework that the internal state of the widget tree has been modified, and the build method needs to be rendered again.
deactivate(): This method is called when the widget is no longer attached to the Widget Tree but it might be attached in a later stage.
dispose(): This is called when the State object or Widget is removed permanently from the Widget Tree. Here you can unsubscribe streams, cancel timers, dispose animation controllers, close files, etc. In other words, you can release all the resources in this method.
There are 3 types of trees in Flutter. Widget Tree, Element Tree and RenderObject Tree:
Widget Tree contains all the widgets that you use in Flutter and holds the configuration of a UI!
Element tree represents the use of a widget to configure a specific location in the tree and contains a piece of UI (Stateless element or Stateful element)!
Render Object Tree or Render Tree holds the properties of the widget along with paint protocols and is responsible for painting what you view on the screen!
A Key is an identifier for Widgets, Elements and SemanticsNodes. A new widget will only be used to update an existing element if its key is the same as the key of the current widget associated with the element. It keeps a reference to state and access the state at different times or maintains it while modifying the widget tree.
This document introduces Bricks, which are templates created with Mason that automate repetitive coding tasks to increase development efficiency. Bricks can be registered on GitHub BrickHub or locally in a project. Several example Bricks are described, including ones to create a UI package, new feature using BLoC and routing, a clean Flutter package, and a model class with copyWith, Equatable, and JSON serialization functionality. Developers are directed to brickhub.dev to find and use available Bricks.
IT Staff Augmentation: made simpler with SomnioEugeniaGallo1
#staffaugmentation is an effective way to get the work done in time and with the right talent for high-scale projects in industries like IT 💪
Discover all the benefits of using this model and expanding your team!
With Somnio as your partner, you’ll have Flutter Experts who can contribute to your development team to help you reach deadlines, increase productivity, and tackle the most challenging projects 💪 📈
👉 Drop us an email at hello@somniosoftware.com and schedule a free 30-minute consultation
#staffagumentation #it #flutter #flutterdev #flutterdevelopment #softwaredevelopmentcompany #ITcompany #flutterapp #fluttercommunity
Yesterday, we hosted the fourth edition of Flutter Sessions 🔥 with Flutter Medellín 🇨🇴
The event consisted of two talks regarding Testing and Performance improvements 📲 in Flutter 💙 We were pleased to welcome Daniel Herrera Sanchez, organizer of Flutter Medellín, for a talk on Flutter performance improvement and measurement 🤗
📷 Here you can see Fabian Bardecio, speaker of the talk “Testing Flutter apps effectively”, in collaboration with Gonzalo Sosa rehearsing his talking points before going live 🚀 — even Dash stopped by to watch 🥹
Big thanks to everyone that joined the meetup, and for your great questions 🙌
It’s always a pleasure to meet fellow #Flutter enthusiasts. We can’t wait for the next edition of #FlutterSessions 💪
You can watch the event on Flutter Uruguay’s YouTube Channel 👉 https://www.youtube.com/watch?v=x_UQulu-dOc
#fluttersessions #flutteruruguay #flutterbygoogle #fluttercommunity #flutterdev #flutterdeveloper #flutterapp #flutterdevelopment #flutterdevelopers #meetup #fluttermeetup #techmeetup
When you choose to develop an application or web, you have to consider several factors 🔎
One of them is the team in charge of development. You can choose to expand your in-house talent or partner with a team dedicated to your demands 👩💼🧑💼
To develop your app from scratch, we recommend a team that is 100% customized and specialized to your needs:
✅ They are 100% focused on your project
✅ Adapted to your specific needs
✅ Permanent communication without cultural barriers
Somnio’s Dedicated Team operates as an addition to your business. We’ll partner with you on your priorities and can leverage our in-house skills, toolkits, and processes to achieve your goals.
The main difference between const and final is that const can be considered as a compile-time constant, while final can be considered as a run-time constant. So when you want the constant value, and you are aware of the value to be assigned, at the compile-time itself, you can use const! But let’s say you want a constant value, but you don’t know its value at compile-time, then you can use final!
A StatefulWidget has a complete widget lifecycle and goes through the following stages:
createState(): In stateful widget, the 1st method that is called is createState(). The createState() method returns the instate of the state of the Stateful widget.
initState(): This is the first method called after the constructor of the Stateful Widget. It is called whenever the screen or widget is added to the widget tree! Here you can initialize your variables, objects, streams, AnimationController, etc.
didChangeDependencies(): It is always called for the 1st time after initState() . You can include few functionalities like API calls based on parent data changes, variable re-initializations, etc.
build(): The build method is the one that shows and renders the UI part to the user. Whenever you want to update your UI or if you click hot-reload, the Flutter framework rebuilds the build() method!
didUpdateWidget(Widget oldWidget): If the parent widget changes its properties or configurations, and the parent wants to rebuild the child widget, with the same Runtime Type, then didUpdateWidget is triggered. This unsubscribes to the old widget and subscribes to the configuration changes of the new widget!
setState(): This method notifies the Flutter framework that the internal state of the widget tree has been modified, and the build method needs to be rendered again.
deactivate(): This method is called when the widget is no longer attached to the Widget Tree but it might be attached in a later stage.
dispose(): This is called when the State object or Widget is removed permanently from the Widget Tree. Here you can unsubscribe streams, cancel timers, dispose animation controllers, close files, etc. In other words, you can release all the resources in this method.
There are 3 types of trees in Flutter. Widget Tree, Element Tree and RenderObject Tree:
Widget Tree contains all the widgets that you use in Flutter and holds the configuration of a UI!
Element tree represents the use of a widget to configure a specific location in the tree and contains a piece of UI (Stateless element or Stateful element)!
Render Object Tree or Render Tree holds the properties of the widget along with paint protocols and is responsible for painting what you view on the screen!
A Key is an identifier for Widgets, Elements and SemanticsNodes. A new widget will only be used to update an existing element if its key is the same as the key of the current widget associated with the element. It keeps a reference to state and access the state at different times or maintains it while modifying the widget tree.
BuildContext can be considered as a locator that will help us to track each widget in a widget tree and locate them and their position in the widget tree. Each BuildContext is unique to a widget.
If you are making a Form where you require saving, reset, or validate operations, use TextFormField. Else, For Simple user input capture, TextField is sufficient.
TextFormField returns a TextField, but wraps the TextField with extra functionality you can use through a Form and also without (such as reset, validation, save, etc.).
In other words, TextFormField is a FormField that contains a TextField.
Regex has always been a pain for developers. But it’s one of the most critical concepts in programming. Let’s see how you can validate an email using regex.
RegExp(r’[a-z]*\@somniosoftware\.com’).hasMatch(input)
If the above condition is true, it means that the input is valid. So based on the result, you can show the error!
InkWell must have a Material Widget as an ancestor, while GestureDetector doesn’t really need one.
GestureDetector has more functionality like drag detection, etc. On the other hand, InkWell include ripple effect which is not available in GestureDetector.
Dash: our loyal office companion 🐦
Wherever you go at the Somnio House, you’ll always find Dash to keep you company 🤗
Maybe he’s playing some PS5 🎮, watching our developers work 👩💻, or even leaving messages across the office 🖍
#dash #flutter #flutterdeveloper #dart #google
6 App Marketing Strategies you should include.pdfEugeniaGallo1
To ensure an app’s success, it is crucial to design and implement a marketing campagin 💭 Here are some essential strategies to think about when launching an application 📲
The document appears to be advertising an event taking place in London and Oslo between August 29th and September 20th. It asks if the reader will see them there and lists the cities and dates.
BuildContext can be considered as a locator that will help us to track each widget in a widget tree and locate them and their position in the widget tree. Each BuildContext is unique to a widget.
If you are making a Form where you require saving, reset, or validate operations, use TextFormField. Else, For Simple user input capture, TextField is sufficient.
TextFormField returns a TextField, but wraps the TextField with extra functionality you can use through a Form and also without (such as reset, validation, save, etc.).
In other words, TextFormField is a FormField that contains a TextField.
Regex has always been a pain for developers. But it’s one of the most critical concepts in programming. Let’s see how you can validate an email using regex.
RegExp(r’[a-z]*\@somniosoftware\.com’).hasMatch(input)
If the above condition is true, it means that the input is valid. So based on the result, you can show the error!
InkWell must have a Material Widget as an ancestor, while GestureDetector doesn’t really need one.
GestureDetector has more functionality like drag detection, etc. On the other hand, InkWell include ripple effect which is not available in GestureDetector.
Dash: our loyal office companion 🐦
Wherever you go at the Somnio House, you’ll always find Dash to keep you company 🤗
Maybe he’s playing some PS5 🎮, watching our developers work 👩💻, or even leaving messages across the office 🖍
#dash #flutter #flutterdeveloper #dart #google
6 App Marketing Strategies you should include.pdfEugeniaGallo1
To ensure an app’s success, it is crucial to design and implement a marketing campagin 💭 Here are some essential strategies to think about when launching an application 📲
The document appears to be advertising an event taking place in London and Oslo between August 29th and September 20th. It asks if the reader will see them there and lists the cities and dates.
2. 1. Know your user personas
Once you know who your target user is, what they value, and
the central pain point they experience that your product will
solve you can start designing the marketing strategy for the
launch and promotion of the app.
3. Approach influencers
Working with influencers will help you increase brand
awareness and reach, build credibility and trust, and drive
purchases decisions.
2. Use social
media wisely
Provide useful content, engage with
your audience, build a community,
be interesting, be creative, make
yourself click-worthy and share-
worthy.
3. 4. Advertise your app
Use a paid strategy through advertising campaigns to reach a
broader audience and get to your target users. You must know
where you can get in touch with your target audience. This way,
you will know which platform is best for promoting your app
with ads.
5. Work on your ASO
(App Store Optimization)
Put a special focus on optimizing your
app profile in stores by using a
descriptive title, using keywords wisely,
describing the app correctly, using
high-quality screenshots, adding an
app preview video, etc.
6. Remember word-of-mouth marketing
WOM marketing continues to be by far the most effective
strategy and to carry it away successfully you mustn't fall into
the temptation of overselling because it may result in
frustrated users, high uninstall rates, and disappointed people
who can negatively talk about your app. Use it wisely and in
your favor.
4. All in all
It's crucial to prepare and plan a go-to-market
strategy for the app to raise anticipation, increase
its reach and build a brand.
Without mobile app marketing to help spread
the word, no one may ever experience your
product!