Most developers don't know how to debug WebView and CustomTabs and track network requests, layouts, and errors.
But it's very simple
1) Start debugging on your phone or emulator as usual
2) Open in chrome ON YOUR DESKTOP the link
3) Find the web view of the SMARTPHONE on this page
4) Click “
5) Debug with DevTools like a regular website, console, network requests, etc. You can also see what's happening on the screen
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox #devtools #webview
But it's very simple
1) Start debugging on your phone or emulator as usual
2) Open in chrome ON YOUR DESKTOP the link
chrome://inspect/#devices3) Find the web view of the SMARTPHONE on this page
4) Click “
inspect”5) Debug with DevTools like a regular website, console, network requests, etc. You can also see what's happening on the screen
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox #devtools #webview
❤35
adb shell "input keyevent 61 \
&& input text user@gmail.com \
&& input keyevent 61 \
&& input text password \
&& input keyevent 66"
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox
❤23
❤29
Forwarded from DART 🎯 FLUTTER (🅵🅾️🆇)
#dart #flutter #benchmark #note #performance #bytes
Performance benchmark of different ways to append data to a list in dart.
https://gist.github.com/PlugFox/9849994d1f229967ef5dc408cb6b7647
Performance benchmark of different ways to append data to a list in dart.
BytesBuilder vs AddAll vs Spread vs Concatenationhttps://gist.github.com/PlugFox/9849994d1f229967ef5dc408cb6b7647
Gist
Performance benchmark of different ways to append data to a list in dart, BytesBuilder vs AddAll vs Spread vs Concatenation
Performance benchmark of different ways to append data to a list in dart, BytesBuilder vs AddAll vs Spread vs Concatenation - main.dart
❤15
In Flutter and Dart applications, it is common to encounter scenarios where a class depends on an asynchronous operation. For instance, a client or service may need to fetch data from a network, or a database may need to establish a connection before being utilized. There are various ways to handle these dependencies efficiently. This article will explore five different approaches to managing asynchronous dependencies in your Dart code.
https://plugfox.dev/handling-asynchronous-dependencies-tips/
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox
https://plugfox.dev/handling-asynchronous-dependencies-tips/
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox
Plague Fox
Handling Asynchronous Dependencies in Flutter & Dart
When working with Flutter and Dart, developers often face situations where a class depends on an async operation, such as fetching data from a network or establishing a database connection. This article presents five tips for handling async dependencies in…
❤16
Explore the power of anonymous functions in Dart to create flexible, expressive, and context-aware code. Learn their use as arguments, closures, value initialization, UI widget building, and conditional execution. Enhance your programming toolkit with these versatile solutions.
https://plugfox.dev/harness-the-power-of-anonymous-functions-in-dart/
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox #closure #anonymous #function
https://plugfox.dev/harness-the-power-of-anonymous-functions-in-dart/
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox #closure #anonymous #function
Plague Fox
Harness the Power of Anonymous Functions in Dart
Explore the power of anonymous functions in Dart to create flexible, expressive, and context-aware code. Learn their use as arguments, closures, value initialization, UI widget building, and conditional execution. Enhance your programming toolkit with these…
❤11
Explore the world of singletons in Dart & Flutter with this comprehensive guide.
https://plugfox.dev/singleton
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox #singleton
https://plugfox.dev/singleton
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox #singleton
Plague Fox
Taming the Lonely Singleton in Dart
Explore the world of singletons in Dart & Flutter with this comprehensive guide.
❤20
Discover how to leverage Dart isolates for effective concurrency, enabling efficient parallelism in your applications. Learn about creating isolates, handling communication, and implementing a watchdog timer.
https://plugfox.dev/mastering-isolates/
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox #isolate
https://plugfox.dev/mastering-isolates/
#tipoftheday #dart #dartdev #dartlang #flutter #flutterdev #plugfox #isolate
Plague Fox
Mastering Isolates in Flutter & Dart
Discover how to leverage Dart isolates for effective concurrency, enabling efficient parallelism in your applications. Learn about creating isolates, handling communication, and implementing a watchdog timer.
❤9
Since Flutter 3.7, you can store all your API keys inside a JSON file and pass it to a new
E.g.
#TipOfTheDay #Dart #Flutter #PlugFox
--dart-define-from-file flag from the command line.E.g.
--dart-define-from-file=keys.json#TipOfTheDay #Dart #Flutter #PlugFox
❤18
Tip of the Day: 🚀 To improve performance in your Flutter apps, use the ListView.builder instead of simply using ListView when dealing with long lists. It only creates items that are visible on the screen and recycles them when they scroll out of view, saving memory and reducing lagging! 🌟
Happy coding! 🔥
#TipOfTheDay #Dart #Flutter #Performance #ListViewBuilder #ChatGPT #n8n
ListView.builder(
itemCount: itemCount,
itemBuilder: (context, index) {
return YourListItemWidget(index);
},
);
Happy coding! 🔥
#TipOfTheDay #Dart #Flutter #Performance #ListViewBuilder #ChatGPT #n8n
❤8
🚀 Tip of the Day: To avoid potential errors when handling dialog and bottom sheet navigations in your application, consider the following advice:
When displaying a dialog or a bottom sheet, it is shown by default from the ROOT navigator:
However, when calling
This discrepancy leads to issues where a modal route is added to one navigator and pop is called from another. To ensure consistency and avoid errors, use:
Alternatively, create a helper function to manage the top modal route effectively:
Following this approach ensures that pop calls are correctly aligned with the appropriate navigator, preventing wrong and unexpected behavior.
#TipOfTheDay #Dart #Flutter #navigator #pop #plugfox
When displaying a dialog or a bottom sheet, it is shown by default from the ROOT navigator:
showDialog(...);
showModalBottomSheet(...);
However, when calling
pop(), it is called from the NEAREST navigator by default:
Navigator.of(context).pop(...);
Navigator.pop(context, ...);
This discrepancy leads to issues where a modal route is added to one navigator and pop is called from another. To ensure consistency and avoid errors, use:
Navigator.of(context, rootNavigator: true).pop(...);
Alternatively, create a helper function to manage the top modal route effectively:
void popDialog(BuildContext context, [Object? result]) {
final state = Navigator.maybeOf(context, rootNavigator: true);
if (state == null || !state.mounted) return;
state.maybePop(result);
}
void popDialogs(BuildContext context) {
final state = Navigator.maybeOf(context, rootNavigator: true);
if (state == null || !state.mounted) return;
state.popUntil((route) => route is! RawDialogRoute<Object?> && route is! ModalBottomSheetRoute<Object?>);
}
Following this approach ensures that pop calls are correctly aligned with the appropriate navigator, preventing wrong and unexpected behavior.
#TipOfTheDay #Dart #Flutter #navigator #pop #plugfox
❤28
🎯 Tip of the Day: Using Extensions in Dart
Extensions in Dart enhance existing types with new methods, making your code cleaner and more readable. Here's a quick look at two useful extensions:
Example 1: Let Extension
The
Example 2: IfNull Extension
The
#TipOfTheDay #Dart #Flutter #extension #let #ifNull #plugfox
Extensions in Dart enhance existing types with new methods, making your code cleaner and more readable. Here's a quick look at two useful extensions:
let and ifNull.Example 1: Let Extension
The
let extension wraps an object in a function, allowing you to perform operations and return the result.
extension LetX<T extends Object?> on T {
R let<R extends Object?>(R Function(T it) callback) => callback(this);
}
void main() {
print(14.let((it) => it * 3)); // Outputs 42
}
Example 2: IfNull Extension
The
ifNull extension provides a default value if the object is null, ensuring safe handling of nullable types.
extension IfNullX<T extends Object> on T? {
T ifNull(T Function() callback) => this ?? callback();
}
void main() {
int? value;
print(value.ifNull(() => 14) * 3); // Outputs 42
}
#TipOfTheDay #Dart #Flutter #extension #let #ifNull #plugfox
❤21