The daily Post

READ OUR BLOG

Unit, Widget, and Integration Testing in Flutter - 14 best packages for testing


Testing is a very important phase in the development life cycle of an application. It ensures that the application is of high quality. Testing requires careful planning and execution. It is also the most time-consuming phase of development.

Dart language and Flutter framework provide extensive support for the automated testing of an application, from unit and widget tests up to integration tests.

Testing in Flutter can be split into three categories:

  • A unit test tests a single function, method, or class.
  • A widget test (in other UI frameworks referred to as a component test) tests a single widget.
  • An integration test tests a complete app or a large part of an app.

Unit Testing

A unit test tests a single function, method, or class. The goal of a unit test is to verify the correctness of a unit of logic under a variety of conditions. External dependencies of the unit under test are generally mocked out. Unit tests generally don’t read from or write to disk, render to screen or receive user actions from outside the process running the test. For more information regarding unit tests, you can view the following recipes or run flutter test --help in your terminal.

Widget Testing

A widget test (in other UI frameworks referred to as a component test) tests a single widget. The goal of a widget test is to verify that the widget’s UI looks and interacts as expected. Testing a widget involves multiple classes and requires a test environment that provides the appropriate widget lifecycle context.

For example, the Widget being tested should be able to receive and respond to user actions and events, perform layout, and instantiate child widgets. A widget test is, therefore, more comprehensive than a unit test. However, like a unit test, a widget test’s environment is replaced with an implementation much simpler than a full-blown UI system.

Integration Testing

An integration test tests a complete app or a large part of an app. The goal of an integration test is to verify that all the widgets and services being tested work together as expected. Furthermore, you can use integration tests to verify your app’s performance.

Generally, an integration test runs on a real device or an OS emulator, such as iOS Simulator or Android Emulator. The app under test is typically isolated from the test driver code to avoid skewing the results.


I have compiled a list of the most popular packages to help us create and automate tests in our flutter applications:

device_preview: approximate how your app looks and performs on another device. Also, you can change the device orientation, change some system configurations (language, dark mode, text scaling factor, …), freeform device with adjustable resolution and safe areas…

mockito: A mock framework inspired by Mockito with APIs for Fakes, Mocks, behavior verification, and stubbing.

faker: A library for generating fake data. faker is heavily inspired by the Python package faker and, the Ruby package ffaker.

test: A full-featured library for writing and running Dart tests across platforms.

mocktail: A Dart mock library that simplifies mocking with null safety support and no manual mocks or code generation.

pixel-perfect: Development tool that helps you make your flutter application “pixel perfect”.

bdd_widget_test: A BDD-style widget testing library. Generates Flutter widget tests from *.feature files.

http_mock_adapter: A simple to use mocking package for Dio intended to be used in tests. It provides various types and methods to declaratively mock request-response communication.

firebase_auth_mocks: Fakes for Firebase Auth. Use this package with `google_sign_in_mocks` to write unit tests involving Firebase Authentication.

round_spot: Customizable, easy-to-use heat map interface analysis library.

device_frame: Mockups for common devices.

fake_async: Fake asynchronous events such as timers and microtasks for deterministic testing.

gherkin: A Gherkin parsers and runner for Dart which is very similar to Cucumber, it provides the base BDD functionality ready for use in platform-specific implementations i.e. flutter/web.

test_coverage: Command-line utility to run tests in Dart VM and collect coverage data.

Let us know in the comments what other tools or packages you use in your day-to-day life.


Feedback

If you find something wrong or anything else, you can always reach me at

If you have found the information in this guide useful, please do not forget to share, recommend and clap. 🙂

7 Best Websites for Flutter Templates

Templates not only allow us to have an easy and fast development, but they also allow us to learn from other developers, I always find new things to learn, new tricks and abstractions that I end up applying to my projects.
Whenever I find an attractive one, I always try to look at the code and look for how it is made in case it can bring me something good.

Also serve as inspiration, if you do not have very clear how to deal with the design of a screen, a cell, a table … there will always be a template that is very close to what you are looking for.

Today I am gonna share some of the amazing sites from which you can get Free Flutter Templates.

Free Flutter Source

Flutter Awesome

It is the one I use the most, the first one I met, and from where I have gotten more ideas for my projects. Without a doubt, it is a huge library of examples that you can download in Github to learn and get inspired.

Best Flutter Apps

Another site with a huge library of templates, updated daily. Also divided into sections to find faster what you are looking for.

Free Flutter Source

Is a library of free apps and tutorials to download sources or copy examples, templates. it’s open-source and easy to use.

GetWidget

Reduces your overall app development time to a minimum of 40% because of its pre-build clean UI widget component that you can use in the flutter app.

Fluttermarket

Provides Templates & Themes With Full Source Code For iOS & Android.

Flutter Campus

Provides Free Flutter tutorials, App Templates, Flutter Packages, Flutter Guides.

Start Flutter

Is a library of free-to-download Flutter templates. All themes are open source for any use, even commercial. Download what you like and get started!

Feedback

If you find something wrong or anything else, you can always reach me at

If you have found the information in this guide useful, please do not forget to share, recommend and clap. 🙂

Top 12 Flutter Development Tools

Here is a list of some of the development tools I am using since I started developing with Flutter a little over two years ago.

#1 Firebase

Firebase is a fantastic tool with so many functionalities like analytics, real-time database, Admob, messaging, hosting, crash reporting, and Firebase Authentication. With Firebase, it is so convenient to integrate on a Flutter app and shop it on a cross-platform application. Firebase APIs can be used as a unified backend into a single SDK.

Checkout the pre-packaged Firebase Extensions here:

#2. RIVE

Rive was previously known as 2Dimentions. Rive work on real assets, and it allows you to design UI or characters that didn’t depend on the mockups. With Rive it is so convenient to add load files in your app or game.

#3 pub.dev

It’s a command-line tool that makes it easy to install and use the Dart libraries with the numbers of packages available at the Pub.dev.

#4 Screenshots

It is a standalone command-line utility and package for capturing screenshot images for Flutter. Screenshots can be integrated into Flutter to work evidently on both iOS and Android.

Demo of Screenshots in action:

#5 Codemagic

If you are looking for a tool to boost the Flutter app development process, then Codemagic comes as a handy tool. With Codemagic, it is so convenient to automate the whole process of your Flutter application.

#6 Panache

Often considered one of the best Flutter app development tools, Panache lets you make customized themes for your flutter apps. You can experiment with different shapes, colors, and themes, and export .dart files to your Google Drive folder.

Its process is simple: all you have to do is apply a theme to the whole app, add the generated theme file to your project/lib, and set the theme property to the generated theme in your main file. Once you complete the entire coding structure, you can now evaluate the same.

Currently used by over 40 million Flutter mobile app developers, Panache is the perfect choice for creating appealing themes for your users!

#7 Visual Studio Code

Visual Studio Code serves as a trendy editor for coding with JavaScript and Node.js and Python and C++. It is a free and open-source code editing tool created by Microsoft for iOS, Linux, and Windows.

Visual Studio Code aids debugging support, intelligent code completion, syntax highlighting, snippets, embedded GIT, and code refactoring. It is robust and lightweight. However, it fails to handle complicated workflows.

Hence, one can use fuller-featured IDEs, such as a Visual Studio IDE, in complex structures on Visual Studio Code. It is easy to function and straightforward. Moreover, Visual Studio Code comes with debugging plugins and Git control.

#8 Android Studio

Android Studio is considered the official integrated development environment [IDE] for Google’s Android operating system and is built on JetBrains’ IntelliJ IDEA software. Apart from Flutter, it is also used for developing Android apps in Kotlin and Java.

With template-based wizards that allow previewing layouts on multiple screen configurations, Android Studio’s emulator runs and debugs apps and verifies app performance, usability, and version compatibility.

#9 Supernova

Want to tightly sync the design and code of all your components, patterns, tokens, and themes? Supernova can make it happen in real-time.

It is one of the most inter-operable tools in the market that allows you to fix the fonts, colors, and other components across the app on multiple platforms and parallelly drives co-creation across teams. It expands app development visibility by connecting DesignOps and DevOps.

Supernova is proficient in converting sketch and Adobe XD mobile design into native frontend code for iOS and Android. Moreover, it aids design editing and views real-time code changes.

A recently-launched feature for the sake of offering assistance, Flutter Interact is beneficial in creating UI code for Flutter. Hence, you can use Supernova to customize every component, style, and screen with just a frontend code in the application.

#10 Adobe Plugins

Adobe has launched a series of plugins to create and design apps, voice interfaces, websites, games, and more. For instance, Adobe Creative Cloud enables designers to turn images, text, vector art, and animations into fully-functional and interactive prototypes.

On the other hand, Adobe XD can be employed for use when a variety of events occur in the application. It is a program written in ANSI C/C++ that uses Acrobat public APIs. It helps the developer to understand the workflow of the designer.

Adobe XD produces the .dart code for design components that can be placed directly to your app codebase. Adobe is perfect for Flutter mobile app development as it helps create engaging and attractive applications with its plugins.

#11 Count.ly

Count.ly is the best analytics platform to understand and enhance customer journeys in desktop, mobile, and web applications. You can start using it for free and track its essential KPIs and metrics that display how a Flutter application operates.

To enjoy an advanced collection of metrics and other features, you can opt for the paid version of Count.ly and host it in the cloud or on-premise. The paid version comes with numerous features such as push notifications, flags, and A/B testing. It also sharpens data privacy and security.

#12 AppsFlyer

AppsFlyer is a mobile attribution tool and a Flutter plugin that helps you learn from where your users arrive. Using its Flutter SDK installed on a mobile app, you can use AppsFlyer to fetch conversion data for your user acquisition and retention campaigns and use that information to optimize advertising budgets.

You can log in to their dashboard and get accurate data through their Retention reports, Cohort analysis, TV app ad attribution. Its customer-centric approach for better decision-making is what makes AppsFlyer stand out in the market.

Let us know in the comments what other tools you use in your day-to-day life.

Github not work for Sourcetree since 13 August 2021

I’m using GitHub PAT to connect to my repository

but since 13 August 2021, it always throws with

remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

Here is the fix that worked for me:

Use GitHub CLI

GitHub CLI will automatically store your Git credentials for you when you choose HTTPS as your preferred protocol for Git operations and answer «yes» to the prompt asking if you would like to authenticate to Git with your GitHub credentials.

  1. Install GitHub CLI on macOS, Windows, or Linux.
  2. In the command line, enter gh auth login, then follow the prompts.
    • When prompted for your preferred protocol for Git operations, select HTTPS.
    • When asked if you would like to authenticate to Git with your GitHub credentials, enter Y.

This is my prompt steps:

? What account do you want to log into? GitHub.com

? What is your preferred protocol for Git operations? HTTPS

? Authenticate Git with your GitHub credentials? Yes

? How would you like to authenticate GitHub CLI? Login with a web browser

! First copy your one-time code: AA87-987F

Press Enter to open github.com in your browser… 

Authentication complete. Press Enter to continue…

– gh config set -h github.com git_protocol https

Configured git protocol

Logged in as *****

Hope it helps you.

scrum self management

7 Tips To Make Your Scrum Team More Self-Managing

We define self-management as the ability of teams to make their own decisions about how to do their work, in what order, and by which method.

Research consistently shows that teams operating in complex environments benefit greatly from the autonomy to self-manage their work. And that makes sense. The nature of complex work (such as product development) is such that teams often encounter unexpected problems, emerging ideas that need to be acted upon quickly, and difficult challenges. If teams are not able to make decisions quickly, and have to ask permission or involve management every time, the whole process grinds to a halt.

If you want to improve in this area, your best strategy is to make clear where your team lacks autonomy and where it would help to have more.

Now that you know what self-management means and how it can benefit your Scrum team, here are quick tips to get you started on improving.

  • 1: Pick one aspect of your current work method that is holding you back as a team. Stop doing it for a Sprint. Reflect during the Sprint Retrospective on what improved and what got worse.
  • 2: Identify one person or department that you depend on as a team to get your work done each Sprint. Contact them to see how you can do some of the work they normally do for you.
  • 3: In the next Sprint, make 1 decision that would normally be taken by someone outside the team. Inform this person afterward.
  • 4: Identify one tool or process that your team has to follow, but that would make your team more effective when stopped or removed. Next Sprint, contact two people who have control over this and invite them to work with you to change it for a few Sprints.
  • 5: Remove at least one item from your Product Backlog that was suggested by someone outside your team, but that nobody considers valuable. Inform this person afterward.
  • 6: During the next non-Scrum meeting, agree to allow everyone to ‘vote with their feet’ (leave) when they feel the meeting doesn’t add value to the team or the product. Don’t ask for clarification and respect each decision.
  • 7: Cancel one recurring meeting you have as a team but that you don’t consider valuable enough. After a few weeks, reflect if this was the right call.

These tips will help you spark small and incremental change in your Scrum team.

roles scrum

Una introducción a los principales Roles de Scrum

Es imprescindible que cada miembro de un equipo de proyecto sepa lo que debe hacer en un proyecto. No sólo eso, cada miembro también debe ser consciente de lo que otros miembros del equipo se supone que deben hacer. La definición explícita de las funciones y responsabilidades es obligatoria para la entrega exitosa de cualquier proyecto y la entrega de proyectos utilizando Scrum no es una excepción.

 

Roles principales de Scrum

En este contexto de lectura, vamos a centrarnos en los roles principales de Scrum en un proyecto y cómo cada rol contribuye y tiene un impacto en el éxito de un proyecto.

Entonces, ¿cuáles son los roles principales de Scrum?

Hay tres roles principales en Scrum que son en última instancia responsables de cumplir con los objetivos del proyecto. Los roles principales son el Product Owner, el Scrum Master y el Equipo Scrum o Dev Team. Juntos se conocen como el Equipo Central de Scrum. Es importante señalar que, de estos tres roles, ninguno tiene autoridad sobre los demás.

Vamos a ir a través de estos roles principales uno por uno.

Product Owner

El Product Owner representa los intereses de la comunidad de partes interesadas para el Equipo Scrum. El Dueño del Producto es responsable de garantizar la comunicación clara de los requisitos de funcionalidad del producto o servicio para el Equipo Scrum, la definición de los criterios de aceptación, y asegurar que esos criterios se cumplan.

En otras palabras, el Dueño del Producto es responsable de asegurar que el Equipo Scrum entregue valor. El Product Owner siempre debe mantener una visión dual. Él o ella debe entender y apoyar las necesidades e intereses de todas las partes interesadas, mientras que también entiende las necesidades y el funcionamiento del Equipo Scrum. Debido a que el Dueño del Producto debe entender las necesidades y prioridades de las partes interesadas, incluidos los clientes y usuarios, este papel se conoce comúnmente como la Voz del Cliente.

El Scrum Master

El Scrum Master es un facilitador que asegura que el Equipo Scrum cuente con un ambiente propicio para completar el desarrollo del producto con éxito. El Scrum Master guía, facilita y enseña las prácticas de Scrum a todos los involucrados en el proyecto; despeja los impedimentos para el equipo; y, asegura que los procesos de Scrum se están siguiendo.

Tenga en cuenta que el papel del Scrum Master es muy diferente del papel desempeñado por el Director del Proyecto en un modelo tradicional de cascada de la gestión de proyectos, en el que el Director del Proyecto trabaja como gerente o líder del proyecto. El Scrum Master sólo trabaja como un facilitador y él o ella está en el mismo nivel jerárquico que cualquier otra persona en el Equipo Scrum – cualquier persona del Equipo Scrum que aprende a facilitar los proyectos Scrum puede convertirse en el Scrum Master para un proyecto o para un Sprint.

El Equipo Scrum

El Equipo Scrum o Dev Team es un grupo o equipo de personas que son responsables de la comprensión de los requisitos de negocio especificados por el Product Owner, la estimación de las Historias de Usuario, y finalmente la creación de los Entregables del proyecto.

Es importante que el Equipo Scrum posea todas las habilidades esenciales necesarias para llevar a cabo el trabajo del proyecto. También es necesario tener un alto nivel de colaboración para maximizar la productividad, de modo que se requiere una coordinación mínima para hacer las cosas.

El tamaño óptimo para un Equipo Scrum es de seis a diez miembros – lo suficientemente grande para asegurar conjuntos de habilidades adecuadas, pero lo suficientemente pequeño para colaborar fácilmente.

Si estás interesado en profundizar más sobre Scrum y quieres sacarte algunos de los certificados de Scrum oficiales, tanto de Scrum.org como de Scrum Alliance, puedes pasarte por Scrumdemy, donde encontrarás cursos y exámenes con cientos de preguntas para practicar y obtener el certificado de Scrum Master, Product Owner o Scrum Dev en el primer intento.

Sitio original con artículos como este y relaccionados con la tecnilogía, gestión y educación: https://cto.education/roles-centrales-de-scrum-una-introduccion

real-time-communication flutter

Top 10 real-time communication packages for flutter

Real-time communications (RTC) are the near simultaneous exchange of information over any type of telecommunications service from the sender to the receiver in a connection with negligible latency, according to Search Unified Communications. Examples of real-time communications include:

  • Voice over landlines and mobile phones
  • VoIP
  • Instant messaging (e.g., WhatsApp, WeChat, Facebook Messenger)
  • Video and teleconferencing
  • Robotic telepresence

Real-time communications can take place in half-duplex or full-duplex modes:

  • Half-duplex RTC. Data transmission can happen in both directions on a single carrier or circuit but not at the same time.
  • Full-duplex RTC. Data transmission can occur in both directions simultaneously on a single carrier or circuit.

Knowing these basic details, let’s list the 10 most popular Flutter libraries about RTC:

1. socket_io_client

Port of awesome JavaScript Node.js library Socket.io-client v2.0.1~v3.0.3 in Dart

See it on pub.dev

2. flutter_webrtc

Flutter WebRTC plugin for iOS/Android/Destkop/Web, based on GoogleWebRTC.

See it on pub.dev

3. web_socket_channel

StreamChannel wrappers for WebSockets. Provides a cross-platform WebSocketChannel API, a cross-platform implementation of that API that communicates over an underlying StreamChannel.

See it on pub.dev

4. agora_rtc_engine

Flutter plugin to simply integrate Agora Video Calling or Live Video Streaming to your app with just a few lines of code.

See it on pub.dev

5. jitsi_meet

Jitsi Meet Plugin — A plugin for integrating open source Jitsi Meet API in flutter. Jitsi Meet is secure, fully-featured and allows completely free video conferencing made with https://jitsi.org

See it on pub.dev

6. agora_uikit

Flutter plugin to simply integrate Agora Video Calling or Live Video Streaming to your app with just a few lines of code.

See it on pub.dev

7. twilio_programmable_video

Flutter plugin for Twilio Programmable Video, which enables you to build real-time video call applications (WebRTC)

See it on pub.dev

8. signalr_core

ASP.NET Core SignalR Client written for Dart that is platform-independent, and can be used on both the command-line and the browser.

See it on pub.dev

9. socket_io

Port of JS/Node library Socket.io. It enables real-time, bidirectional and event-based communication cross-platform. Same as Socket.IO, this project allows you to create several Namespaces, which will act as separate communication channels but will share the same underlying connection.

See it on pub.dev

10. callkeep

iOS CallKit framework and Android ConnectionService for Flutter. Support FCM and PushKit.

Callkeep acts as an intermediate between your call system (RTC, VOIP…) and the user, offering a native calling interface for handling your app calls. This allows you (for example) to answer calls when your device is locked even if your app is terminated.

See it on pub.dev

I have worked with Agora, Jitsi, WebRTC and CallKeep in my projects, which together with FCM, you can create professional communication tools.

2 Tipos de OKR según Google

Los OKR nos empujan a salir y sobrepasar nuestra zona de confort. Nos llevan a conseguir proezas que rozan el límite entre lo posible y lo fantástico. Desvelan nuevas capacidades, nos hacen concebir soluciones más creativas, transformar los modelos de negocio. Para las empresas que quieren prosperar y aspirar a nuevas cotas es algo obligatorio. Como Bill Campbell (Recomiendo encarecidamente leer su libro: El coach de Sillicon Valley: Lecciones de Liderazgo del Legendario Coach de Negocios Bill Campbell acostumbraba a afirmar:

«Si una empresa no continúa innovando morirá, y cuando digo “innovar”, no me refiero a repetirse, sino a innovar de verdad».

El establecimiento de objetivos conservadores obstaculiza la innovación. Y la innovación es como el aire que respiramos: sin ella no es posible ganar.

Google divide sus OKR en dos categorías: los objetivos asignados y los objetivos aspiracionales (o «exigentes»). Se trata de una distinción que tiene un sentido real.

Los objetivos asignados están vinculados a los cálculos de Google: lanzamiento de productos, reservas, contrataciones, clientes. Los directivos los establecen a nivel de empresa y los empleados a nivel departamental. En general, estos objetivos asignados —como pueden ser las expectativas de ventas e ingresos— deben cumplirse en su totalidad (al cien por cien) en un marco de tiempo limitado.

Los objetivos aspiracionales son el reflejo de ideas de ámbito general más arriesgadas y orientadas hacia el futuro. Pueden tener su origen en cualquiera de los niveles e implican a la organización al completo. Son difíciles de alcanzar por definición. Fracasar en ellos —con una media del cuarenta por ciento— está dentro de los planes de Google.

El peso relativo de estas dos categorías es una cuestión de cultura empresarial. Variará de una organización a otra, así como de un trimestre a otro. Los líderes tienen que preguntarse:

  • ¿Qué tipo de empresa necesitamos ser el año próximo?
  • ¿Una ágil y atrevida que abra un nuevo mercado, o una más conservadora y funcional para reafirmar nuestra actual posición?
  • ¿Estamos en modo de supervivencia o disponemos de fondos para apostar por una recompensa mayor?
  • ¿Qué necesita nuestro negocio en este momento?

Más contenido como el de 2 Tipos de OKR según Google puedes encontrarlo en la sección OKR

Si además estás interesado en la gestión de proyectos, me gustaría recomendar la herramienta que utilizo para gestionar mi equipo, gestión de leads, software de facturación, software de gestión de proyectos, CRM… Todo ello lo puedes encontrar en Workoli

firestore

Trying to load an image from another domain?

If you can’t load network images in flutter web from other domains with API calls you will get this error:

Trying to load an image from another domain? Find answers at:

https://flutter.dev/docs/development/platform-integration/web-images

ImageCodecException: Failed to load network image.

If you use firebase storage just follow these steps:

  1. Open Google Cloud Console at your project
  2. Click on the console icon in the top right corner
  3. Click Open editor
  4. Click File->New->cors.json
  5. Place code below
[
  {
    "origin": ["*"],
    "method": ["GET"],
    "maxAgeSeconds": 3600
  }
]
  1. Then Run in console:

gsutil cors set cors.json gs://bucket-name

bucket-name is the name of the storage bucket which you can find on your firebase project above the folders in the storage section

How to import a 3ds Max file into Maya

Issue:

You want to import a 3ds Max file into Maya—specifically a .3ds file.

Solution:

Maya Bonus Tools come with a plugin that allows .3ds file import into Maya.

  1. Install the Maya bonus tools from the following link: https://apps.exchange.autodesk.com/MAYA/en/Home/Index
(If you have Maya 2014, you can get the plug in at: Maya Bonus Tools Resource Page – Announcing Maya BonusTools 2015!!)

Note: Bonus Tools are provided to you on an «as-is» basis; Autodesk does not provide any support in connection with this collection of tools. However, submission of problems and suggestions are encouraged and can be logged through from the Maya Help menu with Report a Problem or Suggest a Feature.

  1. Load the 3dsimport.mll plugin from Window > SettingsPreferences > Plugin Manager.
    Be sure that you import a .3ds file. Autodesk 3ds Max produces both .max files and .3ds files.
Contact

Get Connected.

We welcome you to contact us for more information
about any of our products or services.

Let’s Talk About Your Project

Build a stronger connection with your users through memorable mobile experiences.

Let’s Talk About Your Idea

Give users the outstanding mobile experience they deserve.

Let’s Talk About Your Content

Stunning apps to grow and enrich your business.

made with ❤️

Contact