[{"content":" BaudLink 🔗 # A Go-based project.\nTech Stack: Go\nFor more details, visit https://github.com/Shoaibashk/BaudLink\n","date":"28 November 2025","externalUrl":null,"permalink":"/projects/baudlink/","section":"Projects","summary":"","title":"BaudLink","type":"projects"},{"content":"","date":"28 November 2025","externalUrl":null,"permalink":"/projects/","section":"Projects","summary":"","title":"Projects","type":"projects"},{"content":"","date":"28 November 2025","externalUrl":null,"permalink":"/","section":"Shoaibashk","summary":"","title":"Shoaibashk","type":"page"},{"content":" TicTacToe 🎮 # A classic Tic Tac Toe game built with ReactJS.\nTech Stack: ReactJS\nFor more details, visit https://github.com/Shoaibashk/TicTacToe\n","date":"28 January 2025","externalUrl":null,"permalink":"/projects/tictactoe/","section":"Projects","summary":"","title":"TicTacToe - React Game","type":"projects"},{"content":" FreeConvert ✨ # Easily convert files from one format to another, online.\nTech Stack: TypeScript\nFor more details, visit https://github.com/Shoaibashk/FreeConvert\n","date":"19 January 2025","externalUrl":null,"permalink":"/projects/freeconvert/","section":"Projects","summary":"","title":"FreeConvert - File Format Converter","type":"projects"},{"content":" Nanocom 🚀 # A project to be announced.\nTech Stack: Go\nFor more details, visit https://github.com/Shoaibashk/nanocom\n","date":"10 August 2024","externalUrl":null,"permalink":"/projects/nanocom/","section":"Projects","summary":"","title":"Nanocom","type":"projects"},{"content":" Fox 🦊 # Fox Spirit project.\nTech Stack: C++\nFor more details, visit https://github.com/Shoaibashk/fox\n","date":"20 October 2023","externalUrl":null,"permalink":"/projects/fox/","section":"Projects","summary":"","title":"Fox Spirit","type":"projects"},{"content":" Learn .NET Core 🎯 # Journey of .NET Core with Shoaibashk.\nTech Stack: C#, .NET Core\nFor more details, visit https://github.com/Shoaibashk/learndotnet\n","date":"8 July 2023","externalUrl":null,"permalink":"/projects/learndotnet/","section":"Projects","summary":"","title":"Learn .NET Core","type":"projects"},{"content":" Vimanco ⌨️ # Shoaib\u0026rsquo;s Key bindings for Visual Studio Code.\nTech Stack: TypeScript\nFor more details, visit https://github.com/Shoaibashk/vimanco\n","date":"24 June 2023","externalUrl":null,"permalink":"/projects/vimanco/","section":"Projects","summary":"","title":"Vimanco - VS Code Key Bindings","type":"projects"},{"content":"Cross-compiling your Golang program for ARM32v6 architecture is not only possible but also quite easy to achieve. In this tutorial, we will provide you with an in-depth guide on how to cross-compile using a different operating system, ensuring that your program is compatible with the Raspberry Pi.\nBefore getting started, we recommend that you have at least a basic understanding of Linux and Bash, as it will come in handy when navigating the command line interface and troubleshooting any issues that may arise during the installation process.\nThe Golang Compiler is an essential tool that allows developers to write programs in the Go programming language. It is compatible with a wide range of operating systems, including Linux and Windows. If you are planning to use it on a Raspberrypi zero w, it is important to note that the process may require some additional steps due to the limited resources of this device.\nIn summary, the Golang Compiler is a powerful tool that can help you take your programming skills to the next level. With a little bit of patience and some basic knowledge of Linux and Bash, you can easily get it up and running on your Raspberrypi zero w and start writing your own Go programs.\nLets Code # Let\u0026rsquo;s start by creating a very simple Go application. Create a file called main.go somewhere in your $GOPATH and include the following code:\npackage main import \u0026#34;fmt\u0026#34; func main() { fmt.Println(\u0026#34;Hello World\u0026#34;) } Yes, it is a simple \u0026ldquo;hello world\u0026rdquo; application. The point here isn\u0026rsquo;t in the Go application, but more in the cross-compiling part of things.\nBuild a binary # So typically on Mac, Windows, or Linux, you would execute the following to build a binary from your code:\ngo build Compile Steps # However, to cross-compile for the Raspberry Pi, you will need to execute the following command instead:\nenv GOOS=linux GOARCH=arm GOARM=5 go build This will ensure that your program is compatible with the ARM32v6 architecture.\nIn conclusion, Cross-compiling is definitely achievable and with this guide, you should have no problem getting it done. You can also refer to the following sources for more information and resources:\nhttps://www.youtube.com/watch?v=lDvlysiMbCs\u0026t=8s https://www.thepolyglotdeveloper.com/2017/04/cross-compiling-golang-applications-raspberry-pi/ ","date":"4 April 2023","externalUrl":null,"permalink":"/posts/golang/","section":"Posts","summary":"","title":"Cross-Compile Golang Program for ARM32v6","type":"posts"},{"content":"","date":"4 April 2023","externalUrl":null,"permalink":"/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"Here is my own collection of handpicked flutter interview questions for experienced flutter engineers.\nWhat is Flutter? # Flutter is an open-source mobile application development framework created by Google. It allows developers to build native-looking mobile applications for both Android and iOS platforms using a single codebase. Flutter uses the Dart programming language, which is also developed by Google, and offers a wide range of customizable widgets that can be used to create stunning user interfaces.\nFlutter\u0026rsquo;s main advantage is its ability to deliver high-performance, visually appealing, and responsive applications in a short amount of time. It also offers hot reload functionality, which means developers can see changes to the code in real-time without having to rebuild the entire application.\nFlutter has gained popularity among developers due to its ease of use and flexibility, making it a preferred choice for building mobile applications across various industries. Additionally, Flutter has a growing community of developers who contribute to the framework\u0026rsquo;s development and provide support to fellow developers.\nWhat is the Architecture of Flutter? # At a high level, Flutter uses a layered architecture to render user interfaces and handle application logic. Here\u0026rsquo;s a brief overview of the layers involved in Flutter\u0026rsquo;s operation:\nFlutter framework: This layer provides a set of core libraries and APIs that are used to build Flutter applications. It includes widgets for building user interfaces, networking APIs, and other tools that help developers create high-quality mobile applications.\nEngine layer: This layer is responsible for rendering user interfaces and handling platform-specific functionality such as touch events, input handling, and platform integration. The engine layer communicates with the platform-specific code using platform channels.\nPlatform-specific code: This layer includes platform-specific code for Android and iOS platforms, which is responsible for handling low-level functionality such as accessing system resources and handling platform-specific events.\nDart runtime environment: Flutter uses the Dart programming language, which has its own runtime environment. This layer is responsible for running Dart code and providing the necessary services for garbage collection, reflection, and other language features.\nWhen a Flutter application is launched, the Flutter framework creates a widget tree, which represents the user interface of the application. Each widget in the tree is responsible for rendering a part of the user interface. As the application runs, Flutter updates the widget tree based on changes in the application\u0026rsquo;s state. The engine layer then takes the widget tree and renders it to the screen.\nOverall, Flutter\u0026rsquo;s architecture is designed to provide developers with a high-performance, flexible, and easy-to-use platform for building mobile applications.\nHow many types of widget in flutter? # Flutter provides two types of widgets: StatelessWidget and StatefulWidget.\nStatelessWidget: A StatelessWidget is a widget that does not depend on any mutable state. It means that once the widget is built, it cannot be changed. The only way to change a StatelessWidget is to rebuild it. Stateless widgets are usually used for displaying static content, such as text or images.\nStatefulWidget: A StatefulWidget is a widget that can change its appearance based on mutable state. It means that a StatefulWidget can be updated dynamically, based on the data that it receives or changes that occur in the application. Stateful widgets are usually used for building complex user interfaces that require dynamic behavior, such as forms, animations, and interactive elements.\nBoth types of widgets have their own benefits and use cases. Stateless widgets are simpler and easier to manage, while Stateful widgets are more complex but offer more flexibility and interactivity. Flutter provides a wide range of built-in widgets for both types, which can be customized and combined to create complex user interfaces.\nWhat is Material in flutter? # In Flutter, \u0026ldquo;Material\u0026rdquo; is a design language developed by Google for building user interfaces. Material Design provides a set of guidelines and standards for creating visually appealing and responsive user interfaces that work well on both Android and iOS devices.\nIn Flutter, \u0026ldquo;Material\u0026rdquo; refers to a set of pre-built widgets and components that are designed to follow Material Design guidelines. These widgets include things like buttons, text fields, dialogs, navigation drawers, and more. Using these widgets can help ensure that your application follows Material Design principles, and can also speed up development time by providing pre-built components that you can use in your application.\nFlutter\u0026rsquo;s Material widgets are highly customizable, which means you can change things like colors, fonts, and spacing to match your application\u0026rsquo;s branding and design. You can also create your own custom Material widgets if needed.\nOverall, Material Design and the Material widgets in Flutter provide a powerful and flexible way to build high-quality user interfaces that follow established design principles and work well on a variety of devices.\nWhat is State management in flutter? # State management in Flutter refers to the process of managing the state of a Flutter application. In Flutter, the state refers to any data that can change during the lifetime of the application, such as user input, network responses, or changes in the application\u0026rsquo;s data model.\nState management is important in Flutter because it can affect the performance and behavior of the application. For example, if the state is not managed correctly, the application may become slow, unresponsive, or display incorrect information.\nFlutter provides several options for managing state, including:\nStateful Widgets: Flutter\u0026rsquo;s built-in widgets include Stateful Widgets, which can hold mutable state that can change over time. When the state of a Stateful Widget changes, the widget is rebuilt to reflect the new state.\nInherited Widgets: Inherited Widgets allow you to pass state down the widget tree to child widgets. This can be useful for sharing state between widgets that are not directly related.\nScoped Model: Scoped Model is a third-party package that provides a way to manage state in a centralized way. It allows you to define a model class that holds the application\u0026rsquo;s state, and then provides widgets with access to that state.\nBLoC (Business Logic Component) pattern: BLoC pattern is another third-party package that provides a way to separate business logic from presentation. It uses streams to handle state changes and provides a layer of abstraction between the UI and the application\u0026rsquo;s data model.\nThere are several other state management solutions available in Flutter, each with its own advantages and disadvantages. Choosing the right state management solution depends on the complexity of your application and your specific needs.\nWhat is InheritedWidget? # InheritedWidget is a special type of widget in Flutter that allows data to be passed down the widget tree to its child widgets. It\u0026rsquo;s designed to help manage state and simplify the process of passing data between widgets.\nWhen an InheritedWidget is updated, all of its child widgets are rebuilt with the new data. This allows for efficient updates of the user interface and helps to prevent unnecessary rebuilds of unrelated widgets.\nInheritedWidget is typically used when you have data that needs to be accessed by multiple widgets that are not directly related. For example, you might have an application theme that needs to be accessed by various parts of the application. Instead of passing the theme data down the widget tree manually, you can use an InheritedWidget to pass the data down automatically.\nTo use an InheritedWidget, you need to create a subclass of the InheritedWidget class and define a data object that you want to pass down the widget tree. You can then use the InheritedWidget\u0026rsquo;s of method to retrieve the data object from anywhere in the widget tree.\nInheritedWidget is a powerful tool for managing state in Flutter, but it should be used with care. Because InheritedWidget updates trigger a rebuild of all child widgets, it can be inefficient if used for data that changes frequently or doesn\u0026rsquo;t need to be accessed by many widgets.\nWhat is Riverpod? # Riverpod is a state management library for Flutter that provides a simple and intuitive way to manage and share state between widgets in your application. It is an alternative to other popular state management solutions in Flutter, such as Provider, Scoped Model, and Redux.\nOne of the key features of Riverpod is its focus on dependency injection, which allows you to easily provide state to your widgets without needing to pass it down manually through the widget tree. Riverpod also provides a simple API for managing state, which makes it easy to create and update state objects and ensure that your application stays in sync.\nAnother advantage of Riverpod is that it supports asynchronous data loading, which means you can load data from a remote server or database without blocking the UI thread. This is accomplished using Riverpod\u0026rsquo;s built-in support for Futures and Streams.\nRiverpod is also highly customizable, which means you can adapt it to fit the specific needs of your application. For example, you can use Riverpod to create a centralized state store for your entire application, or you can use it to manage state for individual screens or widgets.\nOverall, Riverpod is a powerful and flexible state management solution for Flutter that can help you build high-quality applications with less code and fewer bugs.\nwhat is AOT \u0026amp; JIT in flutter? # AOT (Ahead Of Time) and JIT (Just In Time) are two different ways that Flutter can compile and run Dart code.\nJIT compilation involves compiling the Dart code into native machine code at runtime. This means that the Dart code is compiled and executed on the fly as the application is running. This approach is generally faster for development because it allows for faster iteration times and hot reloading, which allows you to see changes to your code in real-time.\nAOT compilation involves compiling the Dart code ahead of time into native machine code before the application is deployed. This means that the Dart code is compiled into a binary that can be run directly on the device or emulator, without the need for a runtime environment. This approach is generally faster for production because the code is pre-compiled, which means it can be executed more quickly and with less overhead.\nIn Flutter, you can choose between AOT and JIT compilation depending on your specific needs. For example, JIT compilation is often used during development because it allows for faster iteration times and hot reloading, which can speed up the development process. AOT compilation, on the other hand, is often used in production because it provides faster startup times and better performance, which can result in a better user experience.\nFlutter provides tools for both AOT and JIT compilation, which makes it easy to choose the right approach for your application.\nwhat is mixins in dart? # Mixins are a way to reuse a class\u0026rsquo;s code in multiple class hierarchies without requiring that the class be inherited. In Dart, mixins are achieved by creating a new class that extends Object and then adding it to the inheritance hierarchy of other classes using the with keyword.\nA mixin is essentially a way to add functionality to a class without modifying the class itself. The methods and properties defined in the mixin are made available to the classes that include the mixin via inheritance, but the mixin itself does not inherit from the classes that include it.\nTo create a mixin in Dart, you define a class that contains the code you want to reuse, and then you use the with keyword to mix the functionality into another class. For example:\nclass MyMixin { void doSomething() { print(\u0026#39;Doing something...\u0026#39;); } } class MyClass with MyMixin { // ... } void main() { var obj = MyClass(); obj.doSomething(); // prints \u0026#39;Doing something...\u0026#39; } In this example, the MyMixin class defines a doSomething method, and the MyClass class uses the with keyword to include the mixin in its inheritance hierarchy. As a result, instances of MyClass can use the doSomething method defined in the mixin.\nMixins are a powerful tool for code reuse in Dart, and they can help you to write more modular and maintainable code. However, it\u0026rsquo;s important to use mixins judiciously and to avoid creating complex inheritance hierarchies that can be difficult to understand and maintain.\nWhat is Isolates? # In Flutter, isolates are independent workers that run in separate threads of execution. Each isolate has its own memory space and can run concurrently with other isolates, making it possible to perform multiple tasks at the same time without blocking the user interface.\nIsolates in Flutter are based on the same concept as isolates in the Dart language, which are lightweight threads of execution that run in their own memory space. Isolates in Flutter are used to perform expensive operations in the background, such as network requests, file I/O, and heavy computations, without blocking the user interface.\nIsolates in Flutter are created using the Isolate.spawn() function, which takes a callback function that will be executed in the new isolate. The Isolate.spawn() function returns a Future object that can be used to communicate with the new isolate and receive its results.\nTo communicate between isolates, Flutter provides the SendPort and ReceivePort classes, which are used to send and receive messages between isolates. Messages can be of any data type that can be serialized, such as strings, numbers, or custom objects.\nIsolates in Flutter are a powerful tool for writing high-performance and responsive applications, and they can help to improve the user experience by reducing the amount of time that the user spends waiting for the application to respond. However, it\u0026rsquo;s important to use isolates judiciously and to avoid creating too many isolates, which can cause performance issues and consume too much memory.\nWhat is Future? # In Flutter, Future is a class that represents a value or error that will be available at some point in the future. Futures are used to perform asynchronous operations, such as network requests, file I/O, and animations, without blocking the user interface.\nWhen you perform an asynchronous operation that returns a Future, the operation is started in a separate thread of execution, and the Future is immediately returned to the caller. The Future represents the result of the asynchronous operation, which may not be available immediately.\nTo use a Future in Flutter, you typically create a new instance of the Future class and provide a callback function that will be executed when the result of the operation is available. You can use the then() method to register a callback function that will be called with the result of the operation.\nHere\u0026rsquo;s an example that shows how to use a Future to perform a network request and display the result in a Flutter widget:\nimport \u0026#39;package:flutter/material.dart\u0026#39;; import \u0026#39;package:http/http.dart\u0026#39; as http; class MyWidget extends StatefulWidget { @override _MyWidgetState createState() =\u0026gt; _MyWidgetState(); } class _MyWidgetState extends State\u0026lt;MyWidget\u0026gt; { Future\u0026lt;String\u0026gt; _getData() async { final response = await http.get(Uri.parse(\u0026#39;https://jsonplaceholder.typicode.com/todos/1\u0026#39;)); return response.body; } @override Widget build(BuildContext context) { return Scaffold( body: Center( child: FutureBuilder\u0026lt;String\u0026gt;( future: _getData(), builder: (context, snapshot) { if (snapshot.hasData) { return Text(snapshot.data!); } else if (snapshot.hasError) { return Text(\u0026#39;Error: ${snapshot.error}\u0026#39;); } else { return CircularProgressIndicator(); } }, ), ), ); } } In this example, the _getData() method performs a network request using the http package and returns a Future that represents the result of the request. The FutureBuilder widget is used to display the result of the Future in the widget tree. The builder callback function is executed when the Future completes, and it can display the result or an error message, or a loading indicator until the result is available.\nFutures are an essential part of writing asynchronous code in Flutter, and they provide a powerful and flexible way to handle asynchronous operations and update the user interface when the results are available.\nWhat is fastlane CLI? # Fastlane is an open-source toolset for automating the release process of mobile applications on both the iOS and Android platforms. It provides a collection of pre-built tools, scripts, and integrations that help mobile app developers to automate their build, testing, and deployment workflows.\nFastlane supports a wide range of tasks, including building and signing your app, running unit and UI tests, generating screenshots, distributing beta builds, and submitting your app to the app stores. It also integrates with a variety of third-party services, such as Crashlytics, Slack, and Git, to further automate your workflow.\nFastlane is designed to be highly configurable and customizable, so you can easily set up your own workflows to fit your team\u0026rsquo;s specific needs. It also has a large and active community of developers who contribute plugins, scripts, and integrations to make the tool even more powerful.\nOverall, Fastlane is a powerful tool that can help mobile app developers to streamline their release process, reduce manual errors, and save time and effort. It\u0026rsquo;s a popular choice among mobile app developers, and it\u0026rsquo;s widely used by both large and small companies.\nHow to use fastlane in flutter? # Fastlane can be used to automate the release process of Flutter apps for both iOS and Android platforms. Here are the general steps to use Fastlane in Flutter:\nInstall Fastlane: You can install Fastlane on your development machine using RubyGems by running the following command in your terminal: sudo gem install fastlane -NV Initialize Fastlane: Run the following command in your Flutter project\u0026rsquo;s root directory to initialize Fastlane: fastlane init This will create a fastlane directory in your project\u0026rsquo;s root directory and generate some basic configuration files. 3. 1. Set up Fastlane lanes: A Fastlane lane is a set of commands that automate a specific task in your release process, such as building your app, running tests, or uploading it to the app store. You can define your lanes in the Fastfile in the fastlane directory. 4. 1. Add Fastlane plugins: Fastlane has a large collection of plugins that can help you automate specific tasks in your release process. You can add plugins to your Fastfile by specifying them in the Gemfile in the fastlane directory and running the bundle install command. 5. Run Fastlane: Once you have set up your lanes and added any necessary plugins, you can run Fastlane by running the following command in your project\u0026rsquo;s root directory:\nfastlane \u0026lt;lane_name\u0026gt; Replace `\u0026lt;lane_name\u0026gt;` with the name of the lane you want to run. Fastlane can be a powerful tool to automate the release process of your Flutter app, and it can save you a lot of time and effort in the long run. However, setting up Fastlane and configuring your lanes can be complex and time-consuming, so it may take some effort to get started.\nHow to use Isolates in flutter with riverpod? # Isolates in Flutter are used to run expensive operations in a separate background thread, keeping the UI thread free to respond to user interactions. Riverpod is a state management library for Flutter that allows you to manage your application state in a simple, scalable, and testable way.\nTo use isolates with Riverpod, you can create a FutureProvider or StateNotifierProvider that returns a Future or StateNotifier that runs on a separate isolate. Here is an example of how to use an isolate with FutureProvider:\nimport \u0026#39;dart:isolate\u0026#39;; import \u0026#39;package:flutter/foundation.dart\u0026#39;; import \u0026#39;package:flutter_riverpod/flutter_riverpod.dart\u0026#39;; Future\u0026lt;int\u0026gt; expensiveOperation() async { int result = 0; await compute((int value) { for (var i = 0; i \u0026lt; value; i++) { result += i; } return result; }, 100000000); return result; } final expensiveFutureProvider = FutureProvider\u0026lt;int\u0026gt;((ref) async { final receivePort = ReceivePort(); await Isolate.spawn(_isolate, receivePort.sendPort); final int result = await receivePort.first; return result; }); void _isolate(SendPort sendPort) async { final result = await expensiveOperation(); sendPort.send(result); } In this example, the expensiveOperation function runs on a separate isolate using the compute function from the foundation package. The expensiveFutureProvider returns a FutureProvider that runs on a separate isolate, and it returns the result of the expensive operation.\nTo use the expensiveFutureProvider in your widget, you can use the Consumer widget from flutter_riverpod:\nConsumer( builder: (context, watch, _) { final result = watch(expensiveFutureProvider); return Text(\u0026#39;$result\u0026#39;); }, ); This will update the widget with the result of the expensive operation when it becomes available.\nNote that using isolates may not always be necessary and can add complexity to your application. It\u0026rsquo;s important to weigh the benefits and drawbacks before using them.\n","date":"3 April 2023","externalUrl":null,"permalink":"/posts/my-own-flutter-interview-questions/","section":"Posts","summary":"","title":"My Own Flutter Interview Questions","type":"posts"},{"content":" How to prepare for flutter interview? # Preparing for a Flutter interview involves several steps, including reviewing the basics of the Flutter framework, familiarizing yourself with common interview questions, and practicing your coding skills. Here are some tips to help you prepare for a Flutter interview:\nReview the Flutter documentation: Familiarize yourself with the basics of the Flutter framework, including widgets, state management, and asynchronous programming. Read through the official Flutter documentation, and practice building small apps to solidify your understanding.\nPractice coding: Practice coding Flutter apps on your own, and work on open-source projects to gain more experience. This will help you to become more familiar with the framework and improve your coding skills.\nResearch common interview questions: Look up common [[Flutter Common Interview Questions]], and practice answering them. Some common interview questions include topics such as widgets, state management, animations, and testing.\nReview best practices: Familiarize yourself with best practices for Flutter development, including code organization, performance optimization, and error handling.\nStay up-to-date: Keep up with the latest developments in the Flutter framework, including new features, updates, and releases. Follow Flutter blogs, read the official documentation, and attend Flutter events to stay informed.\nPrepare your portfolio: Compile a portfolio of your best Flutter projects and code samples, and be ready to discuss them during your interview. This will help showcase your skills and experience to your interviewer.\nBe confident: Finally, be confident in your skills and abilities. Be prepared to discuss your strengths and weaknesses, and be ready to demonstrate your problem-solving skills. Show that you are passionate about Flutter development and that you are eager to learn and grow in your career.\nBy following these steps, you can prepare for a Flutter interview and increase your chances of landing the job. Remember to be confident, practice coding, and stay up-to-date with the latest developments in the Flutter community.\n","date":"3 April 2023","externalUrl":null,"permalink":"/posts/prepare-for-flutter-interview/","section":"Posts","summary":"","title":"Prepare for Flutter Interview","type":"posts"},{"content":"Here are some common Flutter interview questions that you may encounter in a Flutter job interview:\nWhat is Flutter, and how does it work? Flutter is an open-source mobile application development framework developed by Google. It uses the Dart programming language and allows developers to build natively compiled applications for mobile, web, and desktop from a single codebase.\nWhat is the difference between Stateless and Stateful widgets in Flutter? Stateless widgets are widgets that do not change their state during the lifetime of the widget. Stateful widgets, on the other hand, have a mutable state that can change during the widget\u0026rsquo;s lifetime.\nHow do you handle state management in Flutter? State management in Flutter involves managing the state of widgets and the overall application. There are several ways to manage state in Flutter, including using setState() for small apps, InheritedWidget for medium-sized apps, and Provider or Redux for larger apps.\nWhat is the BuildContext in Flutter, and how is it used? The BuildContext in Flutter is a handle to the location of a widget in the widget tree. It is used to find other widgets or resources in the widget tree.\nWhat is a Future in Flutter, and how is it used? A Future in Flutter represents a value that may not be available yet but will be available at some point in the future. It is commonly used for asynchronous programming.\nWhat is the difference between async and await in Flutter? async is used to declare a function that returns a Future, while await is used to wait for a Future to complete before continuing execution.\nHow do you perform animations in Flutter? Animations in Flutter are typically performed using the Animation and Tween classes. Animations can be created using implicit animations, which are triggered automatically when a widget\u0026rsquo;s state changes, or explicit animations, which are triggered manually by the developer.\nWhat is the purpose of the pubspec.yaml file in a Flutter project? The pubspec.yaml file in a Flutter project is used to define the dependencies, assets, and other metadata for the project.\nWhat is the difference between hot reload and hot restart in Flutter? Hot reload allows you to make changes to your code and see the changes immediately in your app, while hot restart completely restarts your app and reloads your code.\nHow do you handle dependencies in a Flutter project? Dependencies in a Flutter project are typically managed using the pubspec.yaml file and the pub package manager.\nWhat is a Stream in Flutter, and how is it used? A Stream in Flutter represents a sequence of asynchronous events. It is commonly used for handling user input, network requests, and other asynchronous operations.\nWhat is the purpose of the Navigator widget in Flutter? The Navigator widget in Flutter is used to manage a stack of routes or screens in an app.\nHow do you handle user input in a Flutter app? User input in Flutter can be handled using various widgets, including TextField, Checkbox, Radio, DropdownButton, and others.\nWhat is Dart, and how is it used in Flutter? Dart is the programming language used in Flutter. It is a statically typed language with features such as classes, generics, and async/await for asynchronous programming.\nWhat is the InheritedWidget in Flutter, and how is it used for state management? InheritedWidget is a Flutter widget that provides a way to propagate data down the widget tree. It is commonly used for managing state across multiple widgets.\nThese are just a few examples of the types of questions you may encounter in a Flutter interview. It\u0026rsquo;s important to be familiar with the basics of the Flutter framework and to have experience working with the framework to be able to answer these questions effectively.\n","date":"3 April 2023","externalUrl":null,"permalink":"/posts/flutter-common-interview-questions/","section":"Posts","summary":"","title":"Flutter Common Interview Questions","type":"posts"},{"content":"","date":"3 February 2023","externalUrl":null,"permalink":"/contact/","section":"Shoaibashk","summary":"","title":"Contact","type":"page"},{"content":" Dokcli is an OpenAPI Documentation tool, consisting of \u0026#x26a1; - # built-in Rapidoc web component support Swagger \u0026amp; OpenAPI Spec Convenient way of hosting Api Documentation in 1 file For documentation and examples, please visit https://github.com/Shoaibashk/dokcli\n\u0026#x1f6a7; Please keep in mind that Dokcli is still under active development \u0026#x2697;\u0026#xfe0f; and therefore full backward compatibility is not guaranteed before reaching v1.0.0\nOverview ✨ # Dokcli could be downloaded directly as a standalone app for API Documentation using Swagger \u0026amp; OpenAPI spec file.\nQuickstart 🚀 # Download the dokcli from release. Store it in a folder doc/ as a executable. Now, open the terminal, cd to the newly created folder location and simply type: ./dokcli serve You can provide server port and openAPI spec url. ./dokcli serve -p 2323 -u https://petstore.swagger.io/v2/swagger.json Customization 💅 (coming soon) # ❗ Dokcli uses rapidoc web component under the hood 🌺. Its still under active development.\nDokcli can be Customized using config file config.yaml.\nYou can look at the help section in ./dokcli help.\nSupport 🤗 # The supported build targets at the moment are:\ndarwin arm64 darwin amd64 linux arm64 linux 386 linux amd64 windows 386 windows amd64 windows arm64 ","date":"3 February 2023","externalUrl":null,"permalink":"/projects/dokcli/","section":"Projects","summary":"","title":"Dokcli An OpenAPI Documentation Tool","type":"projects"},{"content":" Hello there ❗ # I\u0026rsquo;m Shoaib, a software developer from India 🇮🇳.\nI do mostly web and mobile development.\nI like to work on (C#, Go, JavaScript/TypeScript, React, Flutter)\nVisit the Github website!\n","date":"2 February 2023","externalUrl":null,"permalink":"/about/","section":"Shoaibashk","summary":"","title":"About","type":"page"},{"content":" Learn Go 🐹 # Learning Go programming language.\nTech Stack: Go\nFor more details, visit https://github.com/Shoaibashk/learngo\n","date":"15 December 2022","externalUrl":null,"permalink":"/projects/learngo/","section":"Projects","summary":"","title":"Learn Go","type":"projects"},{"content":" Notas 📚 # Learning never exhausts the mind.\nTech Stack: Makefile\nFor more details, visit https://github.com/Shoaibashk/notas\n","date":"17 July 2022","externalUrl":null,"permalink":"/projects/notas/","section":"Projects","summary":"","title":"Notas - Learning Never Exhausts the Mind","type":"projects"},{"content":" Notes 📝 # My personal knowledge base and notes using MkDocs.\nTech Stack: Python, MkDocs\nTopics: mkdocs, python\nFor more details, visit https://github.com/Shoaibashk/notes\nLive site: https://shoaibashk.github.io/notes/\n","date":"26 September 2020","externalUrl":null,"permalink":"/projects/notes/","section":"Projects","summary":"","title":"Notes - Personal Knowledge Base","type":"projects"},{"content":" OpenCV Tutorial 🖼️ # Image and Video Processing in Python Using OpenCV.\nTech Stack: Python, OpenCV\nFor more details, visit https://github.com/Shoaibashk/OpenCV_Tutorial\n","date":"28 June 2019","externalUrl":null,"permalink":"/projects/opencv-tutorial/","section":"Projects","summary":"","title":"OpenCV Tutorial","type":"projects"},{"content":" Bode Plot Analysis 📊 # Bode Plot using Python.\nTech Stack: Python, Jupyter Notebook\nFor more details, visit https://github.com/Shoaibashk/Bode-Plot-analysis\n","date":"1 April 2019","externalUrl":null,"permalink":"/projects/bode-plot-analysis/","section":"Projects","summary":"","title":"Bode Plot Analysis","type":"projects"},{"content":" BlinkinFreQ ⚡ # Timer2 based Blinking LED with variable frequency for Arduino. Provides accurate and perfect frequency in ON and OFF states.\nTech Stack: C++, Arduino\nFor more details, visit https://github.com/Shoaibashk/BlinkinFreQ\n","date":"22 August 2017","externalUrl":null,"permalink":"/projects/blinkinfreq/","section":"Projects","summary":"","title":"BlinkinFreQ - Arduino Timer","type":"projects"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"}]