What is Flutter?
Flutter is an open-source UI software development kit created by Google. It’s used to develop applications for Android, iOS, Linux, Mac, Windows, Google Fuchsia, and the web from a single codebase.
What are widgets in Flutter?
In Flutter, everything is a widget. Widgets are the basic building blocks of a Flutter app’s user interface. Each widget is an immutable declaration of part of the user interface.
Explain the difference between ‘hot reload’ and ‘hot restart’.
‘Hot reload’ is a feature that quickly compiles the newly added code in the Dart VM and updates the app, without needing a full restart. It allows you to see changes quickly, but state is preserved. ‘Hot restart’, on the other hand, is a way to completely restart the app, losing the state.
What are Stateful Widgets and Stateless Widgets?
Stateless Widgets are widgets that don’t change over time (e.g., an icon). Stateful Widgets are dynamic; they can change during runtime based on user action or data (e.g., a checkbox).
How do you manage state in Flutter applications?
State management in Flutter can be done in several ways, including using the setState method, managing local state with InheritedWidgets, using the Provider package for more complex state management, and other state management techniques like BLoC, Redux, etc.
What is the pubspec.yaml file and what is it used for?
The pubspec.yaml file is where you define the dependencies for a Flutter project. You can also use it to configure project-specific settings, like the application’s name, description, version, and assets.
Explain the use of keys in Flutter.
Keys are used in Flutter to preserve the state when widgets move around in the widget tree. They’re important when you’re working with stateful widgets that depend on their location.
What is the purpose of the MaterialApp widget?
MaterialApp is a convenience widget that wraps several widgets that are commonly required for material design applications. It builds upon a WidgetsApp by adding material-design specific functionality.
How do you perform asynchronous operations in Flutter?
Asynchronous operations in Flutter are handled by Futures and the async and await keywords, which allow you to make network requests, perform database operations, and other I/O bound tasks without blocking the UI thread.
Can you explain what a ‘BuildContext’ is?
BuildContext is a handle to the location of a widget within the tree structure of all the widgets that are built. It’s unique for each widget and is used by Flutter to identify widget locations especially when dealing with themes and media queries.
What is Dart and why is it used with Flutter?
Dart is an object-oriented, class-defined language that Flutter uses to create a reactive, compiled application. It’s chosen for its efficiency, rich standard library, and tooling.
Explain the concept of a ‘Future’ in Dart.
A Future is Dart’s way of representing a potential value, or error, that will be available at some time in the future. It’s used for potentially time-consuming computations such as I/O-bound work.
What is the BuildContext and how is it used?
BuildContext is a reference to the location of a widget within the tree structure of all the widgets. It’s used by Flutter to identify widget locations and is essential for navigating the widget hierarchy.
How does Flutter handle assets and images?
Assets and images can be specified in the pubspec.yaml file and then accessed in Flutter using the AssetImage class or the Image.asset method.
Can you explain the Navigator and its use in Flutter?
The Navigator manages a stack of ‘Route’ objects and is used to manage app screens or pages. It allows for screen transitions and passing data between screens.
What is the purpose of the pub get command?
The pub get command is used to retrieve all the dependencies listed in the pubspec.yaml file for a Flutter project.
How do you handle exceptions in Flutter?
Exceptions in Flutter can be caught using try-catch blocks. Additionally, you can use the on keyword to catch specific exceptions and the finally clause to execute code whether or not an exception is thrown.
What is the difference between const and final in Dart?
Both const and final are used to declare immutable variables, but const values are compile-time constants, while final values can only be set once and initialized at runtime.
Describe how you would optimize a Flutter application’s performance.
Performance can be optimized by profiling the app, using efficient widgets, keeping the build method lean, avoiding unnecessary computations in the build method, and disposing of resources when they are not in use.
What are mixins in Dart, and how do you use them in Flutter?
Mixins are a way of reusing code in multiple class hierarchies. In Dart, mixins are used to add functionality to a class without extending it, which is useful for sharing behaviors across different widgets in Flutter.
What are keys in Flutter and when should you use them?
Keys preserve state when widgets move within the widget tree. They should be used when you need to maintain a widget’s state after modifications in the tree.
What is the purpose of the main() function in Dart?
The main() function serves as the entry point for execution in Dart programs. In Flutter, it’s where you run your App widget.
How do you create responsive UI in Flutter?
Responsive UI can be achieved using media queries, flexible widgets, layout builders, and orientation builders.
Can you explain the Flutter app lifecycle?
The Flutter app lifecycle includes states such as created, visible, inactive, paused, resumed, and suspended.
What are the packages and plugins in Flutter?
Packages are a collection of Dart code that can be shared, while plugins are packages that include platform-specific code to access APIs on iOS and Android.
How do you handle routing in Flutter?
Routing in Flutter can be handled declaratively using the Navigator widget, or by using named routes defined in the MaterialApp or CupertinoApp widgets.
Describe how you would debug a Flutter application.
Debugging can be done using the Dart DevTools suite, which includes features for performance profiling, layout inspection, and a source-level debugger.
What is the difference between elevation and shadow in Flutter?
Elevation is a property on Material widgets that defines the z-coordinate at which to place the widget. The shadow is the visual representation of the widget’s elevation.
What is the use of Flexible and Expanded widgets in Flutter layouts?
Both Flexible and Expanded control how much space a child widget should occupy in a Flex container, but Expanded fills the available space, while Flexible adjusts the child’s size to its preferred size.
Explain how InheritedWidgets work in Flutter.
InheritedWidgets allow efficient data sharing to a widget’s descendants in the tree. It’s used for distributing information and state down the tree.
How can you manage global state in a Flutter app?
Global state can be managed via various state management techniques like using a Provider, Redux, or even BLoC for more complex state.
What is the difference between StreamBuilder and FutureBuilder?
StreamBuilder listens to a Stream and rebuilds whenever it emits a value, while FutureBuilder builds itself based on the latest snapshot of interaction with a Future.
How does the Flutter framework handle animations?
Flutter provides various classes to handle animations. The AnimationController manages the animation’s timing, while Tween and Curve classes define the animation’s value and effect over time.
What is the role of the BuildContext in Flutter?
BuildContext is a reference to the location of a widget within the tree structure of the app’s UI, which is necessary for various features like navigation and state management.
What is the Flutter ‘Ticker’, and when would you use it?
A Ticker is a mechanism to trigger periodic callbacks at a constant frequency, useful for driving animations by ticking once per frame.
Explain the use of ‘keys’ in Flutter.
Keys preserve state when widgets move within the widget tree and are essential when you want to maintain a widget’s state after it has been rebuilt.
How do you optimize list views in Flutter?
Use the ListView.builder method to create items on demand, which is more memory efficient for long or infinite lists.
What is a ‘Sliver’ in Flutter, and where is it used?
Slivers are portions of a scrollable area that can change their layout. They are used in custom scroll views to create various scrolling effects.
How do you handle different screen sizes and resolutions in Flutter?
Use media queries, flexible and expanded widgets, layout builders, and orientation builders to create a responsive design.