The post Flutter Client SDK for LiveKit appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Use this SDK to add realtime video, audio and data features to your Flutter app. By connecting to LiveKit Cloud or a self-hosted server, you can quickly build applications such as multi-modal AI, live streaming, or video calls with just a few lines of code.
This package is published to pub.dev as livekit_client.
More Docs and guides are available at https://docs.livekit.io
LiveKit client SDK for Flutter is designed to work across all platforms supported by Flutter:
We built a multi-user conferencing app as an example in the example/ folder. LiveKit is compatible cross-platform: you could join the same room using any of our supported realtime SDKs.
Online demo: https://livekit.github.io/client-sdk-flutter/
Include this package to your pubspec.yaml
---
dependencies:
livekit_client: <version>
Camera and microphone usage need to be declared in your Info.plist file.
<dict>
...
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) uses your camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>$(PRODUCT_NAME) uses your microphone</string>
Your application can still run the voice call when it is switched to the background if the background mode is enabled. Select the app target in Xcode, click the Capabilities tab, enable Background Modes, and check Audio, AirPlay, and Picture in Picture.
Your Info.plist should have the following entries.
<dict>
...
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
Since xcode 14 no longer supports 32bit builds, and our latest version is based on libwebrtc m104+ the iOS framework no longer supports 32bit builds, we strongly recommend upgrading to flutter 3.3.0+. if you are using flutter 3.0.0 or below, there is a high chance that your flutter app cannot be compiled correctly due to the missing i386 and arm 32bit framework #132 #172.
You can try to modify your {projects_dir}/ios/Podfile to fix this issue.
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
# Workaround for https://github.com/flutter/flutter/issues/64502
config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES' # <= this line
end
end
end
For iOS, the minimum supported deployment target is 12.1. You will need to add the following to your Podfile.
platform :ios, '12.1'
You may need to delete Podfile.lock and re-run pod install after updating deployment target.
We require a set of permissions that need to be declared in your AppManifest.xml. These are required by Flutter WebRTC, which we depend on.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.your.package">
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
...
</manifest>
For using the bluetooth headset correctly on the android device, you need to add permission_handler to your project. And call the following code after launching your app for the first time.
import 'package:permission_handler/permission_handler.dart';
Future<void> _checkPermissions() async {
var status = await Permission.bluetooth.request();
if (status.isPermanentlyDenied) {
print('Bluetooth Permission disabled');
}
status = await Permission.bluetoothConnect.request();
if (status.isPermanentlyDenied) {
print('Bluetooth Connect Permission disabled');
}
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await _checkPermissions();
runApp(MyApp());
}
By default, we use the communication audio mode on Android which works best for two-way voice communication.
If your app is media playback oriented and does not need the use of the device’s microphone, you can use the media audio mode which will provide better audio quality.
import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc;
Future<void> _initializeAndroidAudioSettings() async {
await webrtc.WebRTC.initialize(options: {
'androidAudioConfiguration': webrtc.AndroidAudioConfiguration.media.toMap()
});
webrtc.Helper.setAndroidAudioConfiguration(
webrtc.AndroidAudioConfiguration.media);
}
void main() async {
await _initializeAudioSettings();
runApp(const MyApp());
}
Note: the audio routing will become controlled by the system and cannot be manually changed with functions like Hardware.selectAudioOutput.
In order to enable Flutter desktop development, please follow instructions here.
On Windows VS 2019 is needed (link in flutter docs will download VS 2022).
final roomOptions = RoomOptions(
adaptiveStream: true,
dynacast: true,
// ... your room options
)
final room = Room();
// you can use `prepareConnection` to speed up connection.
await room.prepareConnection(url, token);
await room.connect(url, token, roomOptions: roomOptions);
try {
// video will fail when running in ios simulator
await room.localParticipant.setCameraEnabled(true);
} catch (error) {
print('Could not publish video, error: $error');
}
await room.localParticipant.setMicrophoneEnabled(true);
Screen sharing is supported across all platforms. You can enable it with:
room.localParticipant.setScreenShareEnabled(true);
On Android, you will have to use a media projection foreground service.
In our example, we use the flutter_background package to handle this. In the app’s AndroidManifest.xml file, declare the service with the appropriate types and permissions as following:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Required permissions for screen share -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
<application>
...
<service
android:name="de.julianassmann.flutter_background.IsolateHolderService"
android:enabled="true"
android:exported="false"
android:foregroundServiceType="mediaProjection" />
</application>
</manifest>
Before starting the background service and enabling screen share, you must call Helper.requestCapturePermission() from flutter_webrtc, and only proceed if it returns true. Refer to our example implementation for details.
On iOS, a broadcast extension is needed in order to capture screen content from other apps. See setup guide for instructions.
On dekstop you can use ScreenSelectDialog to select the window or screen you want to share.
try {
final source = await showDialog<DesktopCapturerSource>(
context: context,
builder: (context) => ScreenSelectDialog(),
);
if (source == null) {
print('cancelled screenshare');
return;
}
print('DesktopCapturerSource: ${source.id}');
var track = await LocalVideoTrack.createScreenShareTrack(
ScreenShareCaptureOptions(
sourceId: source.id,
maxFrameRate: 15.0,
),
);
await room.localParticipant.publishVideoTrack(track);
} catch (e) {
print('could not publish screen sharing: $e');
}
LiveKit supports end-to-end encryption for audio/video data sent over the network. By default, the native platform can support E2EE without any settings, but for flutter web, you need to use the following steps to create e2ee.worker.dart.js file.
# for example app
dart compile js web/e2ee.worker.dart -o example/web/e2ee.worker.dart.js -m
# for your project
export YOU_PROJECT_DIR=your_project_dir
git clone https://github.com/livekit/client-sdk-flutter.git
cd client-sdk-flutter && flutter pub get
dart compile js web/e2ee.worker.dart -o ${YOU_PROJECT_DIR}/web/e2ee.worker.dart.js -m
The setCameraEnabled/setMicrophoneEnabled helpers are wrappers around the Track API.
You can also manually create and publish tracks:
var localVideo = await LocalVideoTrack.createCameraTrack();
await room.localParticipant.publishVideoTrack(localVideo);
Each track can be rendered separately with the provided VideoTrackRenderer widget.
VideoTrack? track;
@override
Widget build(BuildContext context) {
if (track != null) {
return VideoTrackRenderer(track);
} else {
return Container(
color: Colors.grey,
);
}
}
Audio tracks are played automatically as long as you are subscribed to them.
LiveKit client makes it simple to build declarative UI that reacts to state changes. It notifies changes in two ways
ChangeNotifier – generic notification of changes. This is useful when you are building reactive UI and only care about changes that may impact rendering.EventsListener<Event> – listener pattern to listen to specific events (see events.dart).This example will show you how to use both to react to room events.
class RoomWidget extends StatefulWidget {
final Room room;
RoomWidget(this.room);
@override
State<StatefulWidget> createState() {
return _RoomState();
}
}
class _RoomState extends State<RoomWidget> {
late final EventsListener<RoomEvent> _listener = widget.room.createListener();
@override
void initState() {
super.initState();
// used for generic change updates
widget.room.addListener(_onChange);
// used for specific events
_listener
..on<RoomDisconnectedEvent>((_) {
// handle disconnect
})
..on<ParticipantConnectedEvent>((e) {
print("participant joined: ${e.participant.identity}");
})
}
@override
void dispose() {
// be sure to dispose listener to stop listening to further updates
_listener.dispose();
widget.room.removeListener(_onChange);
super.dispose();
}
void _onChange() {
// perform computations and then call setState
// setState will trigger a build
setState(() {
// your updates here
});
}
@override
Widget build(BuildContext context) {
// your build function
}
}
Similarly, you could do the same when rendering participants. Reacting to changes makes it possible to handle tracks published/unpublished or re-ordering participants in your UI.
class VideoView extends StatefulWidget {
final Participant participant;
VideoView(this.participant);
@override
State<StatefulWidget> createState() {
return _VideoViewState();
}
}
class _VideoViewState extends State<VideoView> {
TrackPublication? videoPub;
@override
void initState() {
super.initState();
widget.participant.addListener(this._onParticipantChanged);
// trigger initial change
_onParticipantChanged();
}
@override
void dispose() {
widget.participant.removeListener(this._onParticipantChanged);
super.dispose();
}
@override
void didUpdateWidget(covariant VideoView oldWidget) {
oldWidget.participant.removeListener(_onParticipantChanged);
widget.participant.addListener(_onParticipantChanged);
_onParticipantChanged();
super.didUpdateWidget(oldWidget);
}
void _onParticipantChanged() {
var subscribedVideos = widget.participant.videoTracks.values.where((pub) {
return pub.kind == TrackType.VIDEO &&
!pub.isScreenShare &&
pub.subscribed;
});
setState(() {
if (subscribedVideos.length > 0) {
var videoPub = subscribedVideos.first;
// when muted, show placeholder
if (!videoPub.muted) {
this.videoPub = videoPub;
return;
}
}
this.videoPub = null;
});
}
@override
Widget build(BuildContext context) {
var videoPub = this.videoPub;
if (videoPub != null) {
return VideoTrackRenderer(videoPub.track as VideoTrack);
} else {
return Container(
color: Colors.grey,
);
}
}
}
On LocalTrackPublications, you could control if the track is muted by setting its muted property. Changing the mute status will generate an onTrackMuted or onTrack Unmuted delegate call for the local participant. Other participant will receive the status change as well.
// mute track
trackPub.muted = true;
// unmute track
trackPub.muted = false;
When subscribing to remote tracks, the client has precise control over status of its subscriptions. You could subscribe or unsubscribe to a track, change its quality, or disabling the track temporarily.
These controls are accessible on the RemoteTrackPublication object.
Please join us on Slack to get help from our devs / community members. We welcome your contributions(PRs) and details can be discussed there.
Apache License 2.0
A huge thank you to flutter-webrtc for making it possible to use WebRTC in Flutter.
The post Flutter Client SDK for LiveKit appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post PrepPDF app provides organised access to previous year question papers and solutions appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
PrepPDF App
PrepPDF is a Flutter application designed to provide structured access to previous year question papers and solutions. With a user-friendly interface, this app simplifies the way students prepare for exams.
Linkdin Posts of This Project https://shorturl.at/VmzNI
Screenshots
Features
Firebase Authentication: Secure user login and registration.
Payment Gateway Integration: Seamless payments using Razorpay for premium features.
Push Notifications: Stay updated with the latest exam-related information.
Light and Dark Theme: Switch between light and dark modes for a comfortable user experience.
Store User Data in Firestore: Safely store user data in the cloud.
User-Friendly UI: Simple and intuitive design for easy navigation.
How It Works
Packages Used
The post PrepPDF app provides organised access to previous year question papers and solutions appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post The project is a Flutter library for SMS verification codes appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The project is a Dart library for SMS verification codes.
verification_code:^0.0.4
VerificationCode(
height: 50,
style: CodeStyle.form,
maxLength: 4,
itemWidth: 50,
onCompleted: (String value) {
print("CodeStyle.form value=$value");
},
),
| style | code |
|---|---|
| form | VerificationCode(style: CodeStyle.form) |
| rectangle | VerificationCode(style: CodeStyle.rectangle) |
| line | VerificationCode(style: CodeStyle.line) |
| circle | VerificationCode(style: CodeStyle.circle) |
The post The project is a Flutter library for SMS verification codes appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post OpSo – Open Source Programs App appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Thank you for considering contributing to OpSo! We welcome contributions from the community to help improve the app and add new features. Below are some guidelines for contributing:
If you encounter any bugs or have ideas for new features, please open an issue on GitHub. Make sure to provide detailed information about the issue or feature request, including steps to reproduce the bug if applicable.
We appreciate any code contributions that enhance the functionality or improve the user experience of OpSo. To contribute code, follow these steps:
git checkout -b feature-name.git commit -m "Add feature XYZ".git push origin feature-name.main branch of the original repository.To run the OpSo app locally, you need to have Flutter and Dart installed on your machine. Follow these steps:
git clone https://github.com/andoriyaprashant/OpSo.git
cd OpSo
flutter pub get
flutter doctor
flutter run
If you would like to add information about a new open-source program to OpSo, you can contribute by:
Good documentation is essential for the success of any open-source project. If you notice any areas where the documentation can be improved, feel free to make updates or additions.
Please note that by contributing to OpSo, you agree to abide by the code of conduct. We expect all contributors to uphold the principles of respect, inclusivity, and collaboration.
The post OpSo – Open Source Programs App appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Learning app for kids appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Welcome to **Learn**, a simple learning app built using Flutter for kids. This app is designed to provide an engaging learning experience for children, covering a wide range of topics including :
More exciting features are planned for future updates, such as birds and their voices, information on the solar system, knowledge of shapes, and much more!
To get started with the Learn app, follow these simple steps :
git clone https://github.com/VaibhavCodeClub/learn
Please ensure you have Flutter installed. If not, you can follow the instructions on Flutter.dev to get it installed on your machine.
Navigate to the project directory using the terminal.
Run the following command to fetch the dependencies:
flutter pub get
Once the dependencies are fetched, run the app on your preferred device using :
flutter run
That’s it! The app should now be running on your device/emulator.
Note: If you encounter any issues or have suggestions for improvement, please feel free to create an issue on our GitHub repository. We appreciate your feedback!
The post Learning app for kids appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post API Dash is a beautiful open-source cross-platform API Client appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>API Dash is a beautiful open-source cross-platform API Client built using Flutter which can help you easily create & customize your API requests, visually inspect responses and generate API integration code. A lightweight alternative to postman/insomnia.

We are participating in GSoC 2024 

| Link | |
|---|---|
| Learn about GSoC | Link |
| Organization page on GSoC | Link |
| Project Ideas List | Link |
| Application Guide | Link |
| Discord Channel | Link |
API Dash is a beautiful open-source cross-platform API Client that can help you easily create & customize your API requests, visually inspect responses (full list of supported mime-types) and generate API integration code (full list) on the go.
API Dash can be downloaded from the links below:
| OS | Distribution | Installation Guide | CPU/Architecture | Download Link |
|---|---|---|---|---|
| macOS | .dmg |
Link | Apple Silicon & Intel | Link |
| Windows | .exe |
Link | 64-bit | Link |
| Linux | .deb |
Link | amd64 | Link |
| arm64 | Link | |||
.rpm |
Link | x86_64 | Link | |
| aarch64 | Link | |||
PKGBUILD (Arch Linux) |
Link | x86_64 | Link |
Create & Customize API Requests
GET, HEAD, POST, PATCH, PUT and DELETE).headers, query parameters and body.
Unicode/Emoji and preview any API response containing Unicode/Emoji.
Organize Requests in Collections & Folders
Visually Preview and Download Data & Multimedia API Responses
JSON, XML, YAML, HTML, SQL, etc.
response body of any mimetype (image, text, etc.) directly in the Downloads folder of your system by clicking on the Download button.
Code Generation
Full Dark Mode Support
Data
Settings > Export Data.
Settings & Other Options
API Dash currently supports API integration code generation for the following languages/libraries.
| Language | Library | Comment/Issues |
|---|---|---|
| cURL | ||
| HAR | ||
| C | libcurl |
|
| C# | HttpClient |
|
| C# | RestSharp |
|
| Dart | http |
|
| Dart | dio |
|
| Go | net/http |
|
| JavaScript | axios |
|
| JavaScript | fetch |
|
JavaScript (node.js) |
axios |
|
JavaScript (node.js) |
fetch |
|
| Python | requests |
|
| Python | http.client |
|
| Kotlin | okhttp3 |
|
| Ruby | faraday |
|
| Ruby | net/http |
|
| Rust | reqwest |
|
| Rust | ureq |
|
| Rust | Actix Client |
|
| Java | asynchttpclient |
|
| Java | HttpClient |
|
| Java | okhttp3 |
|
| Java | Unirest |
|
| Julia | HTTP |
|
| PHP | curl |
|
| PHP | guzzle |
|
| PHP | HTTPlug |
We welcome contributions to support other programming languages/libraries/frameworks. Please check out more details here.
API Dash is a next-gen API client that supports exploring, testing & previewing various data & multimedia API responses which is limited/not supported by other API clients. You can directly test APIs that return images, PDF, audio & more.
Here is the complete list of mimetypes that can be directly previewed in API Dash:
| File Type | Mimetype | Extension | Comment |
|---|---|---|---|
application/pdf |
.pdf |
||
| Video | video/mp4 |
.mp4 |
|
| Video | video/webm |
.webm |
|
| Video | video/x-ms-wmv |
.wmv |
|
| Video | video/x-ms-asf |
.wmv |
|
| Video | video/avi |
.avi |
|
| Video | video/msvideo |
.avi |
|
| Video | video/x-msvideo |
.avi |
|
| Video | video/quicktime |
.mov |
|
| Video | video/x-quicktime |
.mov |
|
| Video | video/x-matroska |
.mkv |
|
| Image | image/apng |
.apng |
Animated |
| Image | image/avif |
.avif |
|
| Image | image/bmp |
.bmp |
|
| Image | image/gif |
.gif |
Animated |
| Image | image/jpeg |
.jpeg or .jpg |
|
| Image | image/jp2 |
.jp2 |
|
| Image | image/jpx |
.jpf or .jpx |
|
| Image | image/pict |
.pct |
|
| Image | image/portable-anymap |
.pnm |
|
| Image | image/png |
.png |
|
| Image | image/sgi |
.sgi |
|
| Image | image/svg+xml |
.svg |
|
| Image | image/tiff |
.tiff |
|
| Image | image/targa |
.tga |
|
| Image | image/vnd.wap.wbmp |
.wbmp |
|
| Image | image/webp |
.webp |
|
| Image | image/xwindowdump |
.xwd |
|
| Image | image/x-icon |
.ico |
|
| Image | image/x-portable-anymap |
.pnm |
|
| Image | image/x-portable-bitmap |
.pbm |
|
| Image | image/x-portable-graymap |
.pgm |
|
| Image | image/x-portable-pixmap |
.ppm |
|
| Image | image/x-tga |
.tga |
|
| Image | image/x-xwindowdump |
.xwd |
|
| Audio | audio/flac |
.flac |
|
| Audio | audio/mpeg |
.mp3 |
|
| Audio | audio/mp4 |
.m4a or .mp4a |
|
| Audio | audio/x-m4a |
.m4a |
|
| Audio | audio/wav |
.wav |
|
| Audio | audio/wave |
.wav |
|
| CSV | text/csv |
.csv |
Can be improved |
We welcome PRs to add support for previewing other multimedia mimetypes. Please go ahead and raise an issue so that we can discuss the approach. We are adding support for other mimetypes with each release. But, if you are looking for any particular mimetype support, please go ahead and open an issue. We will prioritize it’s addition.
Here is the complete list of mimetypes that are syntax highlighted in API Dash:
| Mimetype | Extension | Comment |
|---|---|---|
application/json |
.json |
Other mimetypes like application/geo+json, application/vcard+json that are based on json are also supported. |
application/xml |
.xml |
Other mimetypes like application/xhtml+xml, application/vcard+xml that are based on xml are also supported. |
text/xml |
.xml |
|
application/yaml |
.yaml |
Others – application/x-yaml or application/x-yml |
text/yaml |
.yaml |
Others – text/yml |
application/sql |
.sql |
|
text/css |
.css |
|
text/html |
.html |
Only syntax highlighting, no web preview. |
text/javascript |
.js |
|
text/markdown |
.md |
Visit CHANGELOG.md
Just click on the Issue tab to raise a new issue in this repo.
You can contribute to API Dash in any or all of the following ways:
The post API Dash is a beautiful open-source cross-platform API Client appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A curated list of useful Generative AI APIs for developers appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Contributors should go through the Contributing Guide to learn how to raise an issue and send across a PR.
A curated list of useful Generative AI & LLM APIs for developers.
Generative AI APIs allow developers to integrate generative models into their applications without building the models from scratch. These APIs provide an interface for generating text, images, or other content. They also include LLM APIs that provide access to pre-trained language models for various tasks.
Some of the applications of these APIs are:
The goal of this project is to create a Generative AI & LLM API hub for developers so that they can create innovative applications, enhance user experiences, and drive progress in the AI field.
You can start contributing by adding the following:
| Project Homepage | API Docs Link | Requires Auth Token (Y/N) | Description (2 lines max) |
|---|---|---|---|
| OpenAI | Link | Y | OpenAI APIs offer state-of-the-art GenAI models that can generate human-like text, answer questions, translate languages, generate and understand images, turn text to speech or speech to text thus empowering developers to create advanced AI-powered applications with ease. |
| Gemini | Link | Y | designed to understand and interact with multiple data types, including text, images, audio, and video. |
| Llama AI | Link | Y | Offers APIs to access Llama models to answer complex queries and generate text. |
| Aritcle Title | Link | Summary (2 lines max) |
|---|---|---|
| How to integrate generative AI into your applications | Link | The article offers a detailed tutorial on accessing the OpenAI API, demonstrating methods via web API calls and Python’s OpenAI library, enabling developers to integrate Generative AI effortlessly into their projects. |
| Video Title | Link | Summary (2 lines max) |
|---|---|---|
| Beginner’s Guide to FastAPI & OpenAI ChatGPT API Integration | Link | The video offers a step-by-step tutorial on FastAPI and OpenAI’s ChatGPT integration using Python. FastAPI is a high-performance web framework that’s perfect for building APIs, and ChatGPT brings a layer of artificial intelligence into the mix. |
| How to Integrate a Custom GPT Into Your Website (Step-by-step Guide) | Link | The video offers a step-by-step tutorial on a custom GPT integration on websites. Two different approaches have been depicted in the video so that both a beginner as well as those with some technical know-how could find it comfortable. |
The post A curated list of useful Generative AI APIs for developers appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A cross platform plugin for modifying calendars on the user’s device appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>A cross-platform plugin for modifying calendars on the user’s device.
event.startTimeZone)TZ database name column on Wikipedia
Due to feedback we received, starting from 4.0.0 we will be using the timezone package to better handle all timezone data.
This is already included in this package. However, you need to add this line whenever the package is needed.
import 'package:timezone/timezone.dart';
If you don’t need any timezone specific features in your app, you may use flutter_native_timezone to get your devices’ current timezone, then convert your previous DateTime with it.
import 'package:flutter_native_timezone/flutter_native_timezone.dart';
initializeTimeZones();
// As an example, our default timezone is UTC.
Location _currentLocation = getLocation('Etc/UTC');
Future setCurentLocation() async {
String timezone = 'Etc/UTC';
try {
timezone = await FlutterNativeTimezone.getLocalTimezone();
} catch (e) {
print('Could not get the local timezone');
}
_currentLocation = getLocation(timezone);
setLocalLocation(_currentLocation);
}
...
event.start = TZDateTime.from(oldDateTime, _currentLocation);
For other use cases, feedback or future developments on the feature, feel free to open a discussion on GitHub.
From v3.9.0, device_calendar is null-safe. However, not all workflows have been checked and bugs from older versions still persist.
You are strongly advised to test your workflow with the new package before shipping. Better yet, please leave a note for what works and what doesn’t, or contribute some bug fixes!
The following will need to be added to the AndroidManifest.xml file for your application to indicate permissions to modify calendars are needed
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
NOTE: From v4.3.2 developers no longer need to add proguard rule in their app.
By default, all android apps go through R8 for file shrinking when building a release version. Currently, it interferes with some functions such as retrieveCalendars().
You may add the following setting to the ProGuard rules file proguard-rules.pro (thanks to Britannio Jarrett). Read more about the issue here
-keep class com.builttoroam.devicecalendar.** { *; }
See here for an example setup.
For more information, refer to the guide at Android Developer
Since v.1.0, this version has migrated to use AndroidX instead of the deprecated Android support libraries. When using 0.10.0 and onwards for this plugin, please ensure your application has been migrated following the guide here
For iOS 10+ support, you’ll need to modify the Info.plist to add the following key/value pair
<key>NSCalendarsUsageDescription</key>
<string>Access most functions for calendar viewing and editing.</string>
<key>NSContactsUsageDescription</key>
<string>Access contacts for event attendee editing.</string>
For iOS 17+ support, add the following key/value pair as well.
<key>NSCalendarsFullAccessUsageDescription</key>
<string>Access most functions for calendar viewing and editing.</string>
Note that on iOS, this is a Swift plugin. There is a known issue being tracked here by the Flutter team, where adding a plugin developed in Swift to an Objective-C project causes problems. If you run into such issues, please look at the suggested workarounds there.
The post A cross platform plugin for modifying calendars on the user’s device appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A simple flutter plugin for saving files in all platforms appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>This plugin package primarily focuses on one task: saving files on Android, iOS, Web, Windows, MacOS, and Linux. It might not have a plethora of features, but it does this job well. This package depends on path_provider for Android and iOS and basic html anchor for Web. The main reason I built this plugin was to avoid using HTML just for downloading files. The plugin is pretty simple and saves the file in Downloads folder in Windows, MacOS, Linux and directly downloads the file in Web, in iOS, the file is Saved in Application Documents Directory, and in Android it is saved in the applications files directory Android/data/your.package.name/file/your_file.extension.
The plugin itself is pretty easy to use. Just call the method saveFile() with respective arguments.
await FileSaver.instance.saveFile({
required String name,
Uint8List? bytes,
File? file,
String? filePath,
LinkDetails? link,
String ext = "",
MimeType mimeType = MimeType.other,
String? customMimeType,
Dio? dioClient,
Uint8List Function(Uint8List)? transformDioResponse,
});
This saveFile() method has 8 Named arguments.
String name which takes the name of the file,
Uint8List bytes which will be your actual encoded file,
Or
File file which will be your file in the File object (from dart:io)
Or
Stirng filePath which will be your file path
Or
LinkDetails link which will provide the link, header, request method and body to your file. LinkDetails can be used as
LinkDetails(
link: "https://www.example.com/file.extentions",
headers: {"your-header-key": "you-header-value"},
method: "POST",
body: body
)
Out of these parameters, you will have to use atleast one
String ext this will be your file extension.
Another parameter is MimeType type Specifically for Web, which will be your file type
String customMimeType this will be your custom mime type, if you want to use your own mime type, you can use this parameter
Dio dioClient this will be your dio client, if you want to use dio for downloading the file, you can use this parameter
Uint8List Function(Uint8List) transformDioResponse this will be your function to transform the response, if you want to transform the response as per your requirement, you can use this parameter
MimeType is also included in my Package, I’ve included types for Sheets, Presentation, Word, Plain Text, PDF, MP3, MP4 and many other common formats
or you can call saveAs() only available for android and iOS & macOS at the moment
await FileSaver.instance.saveAs({
required String name,
Uint8List? bytes,
File? file,
String? filePath,
LinkDetails? link,
required String ext,
required MimeType mimeType,
String? customMimeType,
Dio? dioClient,
Uint8List Function(Uint8List)? transformDioResponse,
});
All the parameters in this method are the same as the saveFile() method.
Go to your project folder, ios/Runner/info.plist and Add these keys:
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
Open Your Project in XCode (Open XCode -> Open a project or file -> Your_Project_Folder/ios/Runner.xcworkspace) Open info.plist Add these rows:
Application supports iTunes file sharing (Boolean -> Yes)
Supports opening documents in place (Boolean -> Yes)
Go to your project folder, macOS/Runner/DebugProfile.entitlements
For release you need to open ‘YOUR_PROJECT_NAME’Profile.entitlements
and add the following key:
<key>com.apple.security.files.downloads.read-write</key>
<true/>
Open Your Project in XCode (Open XCode -> Open a project or file -> Your_Project_Folder/macos/Runner.xcworkspace) Open your entitlement file (DebugProfile.entitlements & ‘YOUR_PROJECT_NAME’Profile.entitlements)
and if you get Client Socket Exception while saving files in MacOS from link, you have to add this key in the DebugProfile.entitlements and Release.entitlements of your macOS application and set the value to true
<key>com.apple.security.network.client</key>
<true/>
You can find these files in the project_folder/macos/Runner/ directory.
The post A simple flutter plugin for saving files in all platforms appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A new Flutter for TV project appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>A new Flutter for TV project.
To run on AppleTV:
scripts/run_apple_tv.sh and in scripts/copy_framework.shsh scripts/run_apple_tv.shThe article with details about Apple TV support
The details regarding the compilation of a custom engine you can find here.
The post A new Flutter for TV project appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A Flutter package for rendering interactive 3D models appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>A Flutter package for rendering interactive 3D models in different formats(glb, gltf, fbx, obj), with ability to control animations, textures and camera.
//Create controller object to control 3D model.
Flutter3DController controller = Flutter3DController();
//It will play 3D model animation, you can use it to play or switch between animations.
controller.playAnimation();
//If you pass specific animation name it will play that specific animation.
//If you pass null and your model has at least 1 animation it will play first animation.
controller.playAnimation(animationName: chosenAnimation);
//It will pause the animation at current frame.
controller.pauseAnimation();
//It will reset and play animation from first frame (from beginning).
controller.resetAnimation();
//It will return available animation list of 3D model.
await controller.getAvailableAnimations();
//It will load desired texture of 3D model, you need to pass texture name.
controller.setTexture(textureName: chosenTexture);
//It will return available textures list of 3D model.
await controller.getAvailableTextures();
//It will set your desired camera target.
controller.setCameraTarget(0.3, 0.2, 0.4);
//It will reset the camera target to default.
controller.resetCameraTarget();
//It will set your desired camera orbit.
controller.setCameraOrbit(20, 20, 5);
//It will reset the camera orbit to default.
controller.resetCameraOrbit();
//The 3D viewer widget
Flutter3DViewer(
controller: controller,
src: 'assets/business_man.glb',
)
pubspec.yamldependencies:
flutter_3d_controller: ^1.2.1
AndroidManifest.xml (Android 9+ only)To use this widget on Android 9+ devices, your app must be permitted to make an HTTP connection to http://localhost:XXXXX. Android 9 (API level 28) changed the default for [android:usesCleartextTraffic] from true to false, so you will need to configure your app’s android/app/src/main/AndroidManifest.xml as follows:
<application
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
- android:label="example">
+ android:label="example"
+ android:usesCleartextTraffic="true">
<activity
android:name=".MainActivity"
This does not affect Android 8 and earlier. See [#7] for more information.
app/build.gradle (Android only)Change minSdkVersion to 21.
defaultConfig {
...
minSdkVersion 21
...
}
Info.plist (iOS only)To use this widget on iOS, you need to opt-in to the embedded views preview by adding a boolean property to your app’s ios/Runner/Info.plist file, with the key io.flutter.embedded_views_preview and the value YES:
<key>io.flutter.embedded_views_preview</key>
<true/>
web/index.html (Web only)Modify the <head> tag of your web/index.html to load the JavaScript, like so:
<head>
<!-- Other stuff -->
<script type="module" src="./assets/packages/flutter_3d_controller/assets/model-viewer.min.js" defer></script>
</head>
This package uses ‘Model Viewer’ to render 3D models and it may have some issues in rendering some models/textures, the core of the package (Model Viewer) will change in the future to support all types of 3D models
The post A Flutter package for rendering interactive 3D models appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Dart package for working with MIME type definitions appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The MimeTypeResolver class can be used to determine the MIME type of a file. It supports both using the extension of the file name and looking at magic bytes from the beginning of the file.
There is a builtin instance of MimeTypeResolver accessible through the top level function lookupMimeType. This builtin instance has the most common file name extensions and magic bytes registered.
import 'package:mime/mime.dart';
void main() {
print(lookupMimeType('test.html'));
// text/html
print(lookupMimeType('test', headerBytes: [0xFF, 0xD8]));
// image/jpeg
print(lookupMimeType('test.html', headerBytes: [0xFF, 0xD8]));
// image/jpeg
}
You can build you own resolver by creating an instance of MimeTypeResolver and adding file name extensions and magic bytes using addExtension and addMagicNumber.
The class MimeMultipartTransformer is used to process a Stream of bytes encoded using a MIME multipart media types encoding. The transformer provides a new Stream of MimeMultipart objects each of which have the headers and the content of each part. The content of a part is provided as a stream of bytes.
Below is an example showing how to process an HTTP request and print the length of the content of each part.
// HTTP request with content type multipart/form-data.
HttpRequest request = ...;
// Determine the boundary form the content type header
String boundary = request.headers.contentType.parameters['boundary'];
// Process the body just calculating the length of each part.
request
.transform(new MimeMultipartTransformer(boundary))
.map((part) => part.fold(0, (p, d) => p + d))
.listen((length) => print('Part with length $length'));
The post Dart package for working with MIME type definitions appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Experiments with upcoming Dart macros appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>Experiments with upcoming Dart macros
flutter channel master--enable-experiment=macros to dart invocationsThis is a replacement for the freezed and json_serializable packages.
It implements fromJson, toJson, copyWith, toString, operator == and hashCode.
See bin/model.dart for an example.
See lib/model.dart for implementation.
I’ve definitely missed edge cases. Create an issue or a pull request. Do not use it in production yet.
The post Experiments with upcoming Dart macros appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Google AI SDK for Dart appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The Google Generative AI SDK for Dart allows developers to use state-of-the-art Large Language Models (LLMs) to build language applications.
This repository contains a few sample apps. To try them out, follow these steps:
$GOOGLE_API_KEY environment variable with an API key with access to the Gemini generative models, or run the below commands with an environment containing this variable.bin directory (e.g., dart bin/simple_text.dart).Add a dependency on this repository to the path pkgs/google_generative_ai. Once the API is stable the package will be available from pub. We welcome pre-publish feedback through GitHub issues.
dependencies:
google_generative_ai:
git:
url: [email protected]:google/generative-ai-dart.git
path: pkgs/google_generative_ai
ref: main
final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
print(response.text);
Find complete documentation for the Google AI SDKs and the Gemini model in the Google documentation: https://ai.google.dev/docs
| Package | Description | Version |
|---|---|---|
| google_generative_ai | The Google Generative AI SDK for Dart – allows access to state-of-the-art LLMs. | |
| samples/dart | Dart samples for package:google_generative_ai. |
|
| samples/flutter_app | Flutter sample for package:google_generative_ai. |
See Contributing for more information on contributing to the Generative AI SDK for Dart.
The contents of this repository are licensed under the Apache License, version 2.0.
The post Google AI SDK for Dart appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Create A Customizable Chatbot Easily And Quickly With Flutter appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
flutter_gemini_bot is a package that allows you to easily create a chatbot application in Flutter. It is built on top of the Gemini API.
This package provides a FlutterGeminiChat widget that you can use to create a chat bot interface in your Flutter application.
To use this package, you will need:
ChatModel objects representing the chat messages or sessionsHere is an example of how to use the FlutterGeminiChat widget:
flutter pub add flutter_gemini_bot
List<ChatModel> chatList = []; // Your list of ChatModel objects
String apiKey = 'your_api_key'; // Your API key
FlutterGeminiChat(
chatContext: 'example_context',
chatList: chatList,
apiKey: apiKey,
),
This project is open source and we welcome contributions. Please feel free to submit a pull request or open an issue.
This project is licensed under the MIT License.
The post Create A Customizable Chatbot Easily And Quickly With Flutter appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post ModularUI : Pre-built beautiful flutter widgets appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>Craft beautiful, accessible, and responsive Flutter UIs with a Modular-UI Design-inspired component library
Get involved: join our discord :)))
See our card creation guide
Calling on all the trendsetting Flutter enthusiasts!
Join forces as we pioneer the creation of the ultimate, expansive, and seamless UI Library for Flutter. Let’s make waves together! 
flutter create . inside the project folder to generate any necessary filesflutter packages pub global activate --source path . and export the PATH if necessary or add the path as an Environment Variable.dependencies:
modular_ui:
path: <replace_with_cloned_repo_location>
import 'package:modular_ui/modular_ui.dart'; in your other flutter project.ModularUI Design language is inspired by Material Tailwind and shadcn/ui Our current goal is to make as many components as possible and ship this asap, so we might merge any widget that looks like them or if they are consistent with our theme, obviously the future goal would be to make them perfect and consistent.
any widget of ModularUI must follow this naming convention : MUI<widget_name> e.g. MUIPrimaryButton MUI stands for ModularUI.
We welcome contributions! Please refer to our contribution guidelines for details.
This project is licensed under the BSD-3.
While casually scrolling through Twitter, I stumbled upon an intriguing tweet from Luke that sparked a burst of inspiration within me. Fueling my curiosity, I conducted a Poll on Luke’s original post, and to my delight, several individuals expressed interest. Emboldened by this positive response, I decided to take the plunge.
Enter Yash, a kindred spirit who shared my enthusiasm. Together, we embraced the challenge with rocket-like enthusiasm 






.
Sharing our endeavor on Twitter garnered an impressive reception, surpassing even my own expectations. Tweet link
And now, the moment has arrived—our modular_ui repository is officially public! We’re optimistic that it will find a welcoming home among Flutter developers, paving the way for a custom UI library tailored for the Flutter community.
The post ModularUI : Pre-built beautiful flutter widgets appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A simple yet powerful path planning tool for FRC robots appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>Download from one of the above app stores to receive auto-updates. Manual installs can be found here.
PathPlanner is a motion profile generator for FRC robots created by team 3015. The main features of PathPlanner include:
Make sure you install PathPlannerLib to generate your paths.
https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib.json
flutter build <PLATFORM>
<PROJECT DIR>/build/windows/runner/Release<PROJECT DIR>/build/macos/Build/Products/Release<PROJECT DIR>/build/linux/x64/release/bundleflutter run to run in debug mode
The post A simple yet powerful path planning tool for FRC robots appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Movie Hub appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Movie Hub is an app that allows users to view different categories of movies and also watch!. It creates an immersive and seamless movie-watching experience!. It is built with Flutter
and Firebase using the TMDB API and VidSrc for viewing the movies.
It provides an interactive and captivating experience for the user!
To run MovieHub from the Codebase, you need to get a TMDB API key from here you will have to create an account, if you don’t have one.
Once you have the API Key, you can create an api_keys.dart file, locate the lib > core > utils and create the file under it
Add the following:
String get baseUrl => 'https://api.themoviedb.org/3';
String get apiKey => 'YOUR API KEY';
String get videoBaseUrl => 'https://vidsrc.to/embed/movie/';
You also need to create a firebase project at Firebase
With all these in place, you can
flutter run
Veni, Vidi, Vici!
I faced a lot of issues during the development of this app, but i also learnt alot!

, but i had to do more research and changed the webview package , after a lot of iteration, it worked!The post Movie Hub appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Cliptopia is a state-of-the-art clipboard management software for the linux desktops appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Cliptopia is a state-of-the-art clipboard management software for the Linux desktops that turns your simple clipboard into a full-fledged
power house
Cliptopia watches not only your texts but also any emojis, colors, commands, web images, screenshots or any local file/directory that you copy and then, it provides a full-fledged powerful interface supporting advanced searching and filtering which even allows you to search any image that you have copied. This is just the tip of the features Cliptopia provides out of the box.
As the names goes Cliptopia, it is all about your clipboard, but in the sense of vast land which is full of features that provides you a clipboard experience in the best ever form out there.
Cliptopia supports commenting on clipboard items
Clipboard Content Protection Mechanism
Handy set of shortcuts to toggle sensitive data
Regex mode content filtering
Go Incognito with just a click of a toggle
An intelligent cache management system
File extension mode searching
Protecting your clipboard contents from being accidentally displayed during screen sharing
Filtering Items by Date
Finding Items by comments
Filtering Images on the basis of aspect ratios
Displaying images from copied files
Compositor independent content injection
)
Built-in App Bug Report Generation
Built-in issues identification panel
Command execution right from the User Interface
Fully Compositor Independent (No matter if it is X11 or Wayland, Cliptopia rocks)
See The Daemon , to explore more features.
This is for users who are running GNOME on Ubuntu in a wayland session (default session). Rather than using wl-clipboard, please enable force-xclip mode from cliptopia’s settings to prevent encounter this issue.
At the heart of Cliptopia lies the cliptopia-daemon which is responsible for watching your clipboard.
When you install Cliptopia, you can run it directly from the app launcher or by just executing cliptopia in your terminal or by pressing Super + V after you have created the clipboard shortcut. In any case, cliptopia will ask you to install the daemon …
Either you can download/build it from source by yourself from its repo or you let Cliptopia handle this for you. Yes, Cliptopia can itself download the daemon for you if you desire so.
Moving further, in any case, the daemon should be placed at /usr/bin so that cliptopia can manage it.
Cliptopia is compositor independent which means it works the same no matter you are on X11 or Wayland. On X11, xclip is used to watch the clipboard and on Wayland wl-clipboard is used.
On some distros, like Ubuntu with GNOME on Wayland, xclip still works because of an XWayland session, so, if you want you can force cliptopia to use xclip even on wayland also from its settings panel.
Right now, you can install cliptopia from the source or from .deb package in the releases section.
Before that you need the following commands available in your linux distribution …
Yes, Cliptopia is written entirely using Flutter, thus, it compiles to native and delivers lightening fast performance as your other apps.
Installing Cliptopia is a very easy and fast process …
git clone https://github.com/omegaui/cliptopia
cd cliptopia
./install-from-source.sh
Running the above commands in sequence will install cliptopia on your machine.
If you have already installed cliptopia, running the above commands will result in manually updating your installation.
Then, you need to add a custom keyboard shortcut to invoke Cliptopia in Power Mode … 
If you have installed Cliptopia from releases using the .deb package, then, change
cliptopia --silent --power
to
/usr/local/lib/Cliptopia/cliptopia --silent --power
Cliptopia can be made to launch in three mode:
cliptopia)cliptopia --silent)cliptopia --silent --power)Injection: it refers to clicking on an clipboard element in the UI of Cliptopia to insert it in the last focussed field.
There is a very valid reason Power Mode is designed to not update in real time, as we know, Super + V combination can be used to bring the Power Mode into effect, it is designed to be used occasionally when you require to find an item that you copied earlier and in cases, where you need to do this quickly.
So, for the Power Mode to get ready in an instant, a single read of the cache is performed to deliver the fastest possible performance on your system, thus, preventing the real time updates as there is no watching of the cache being maintained by the daemon.
That’s why power mode does not update in realtime.
But, We do not stop here, actually the Power Mode can be made to update in real time, by using the --update flag. Work on this is currently under development.
Cliptopia will have a built-in update system, so, when a new release arrives, your installation will automatically notify you about it.
Cliptopia will even offer an in-app uninstall feature to uninstall cliptopia from your system in case you want a fresh install.
The post Cliptopia is a state-of-the-art clipboard management software for the linux desktops appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Mapbox Maps SDK Flutter Plugin appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>Web and desktop are not supported.
Contributions welcome!
| Feature | Android | iOS |
|---|---|---|
| Style | ![]() |
![]() |
| Camera position | ![]() |
![]() |
| Camera animations | ![]() |
![]() |
| Events | ![]() |
![]() |
| Gestures | ![]() |
![]() |
| User Location | ![]() |
![]() |
| Circle Layer | ![]() |
![]() |
| Fill Layer | ![]() |
![]() |
| Fill extrusion Layer | ![]() |
![]() |
| Line Layer | ![]() |
![]() |
| Circle Layer | ![]() |
![]() |
| Raster Layer | ![]() |
![]() |
| Symbol Layer | ![]() |
![]() |
| Hillshade Layer | ![]() |
![]() |
| Heatmap Layer | ![]() |
![]() |
| Sky Layer | ![]() |
![]() |
| GeoJson Source | ![]() |
![]() |
| Image Source | ![]() |
![]() |
| Vector Source | ![]() |
![]() |
| Raster Source | ![]() |
![]() |
| Rasterdem Source | ![]() |
![]() |
| Circle Annotations | ![]() |
![]() |
| Point Annotations | ![]() |
![]() |
| Line Annotations | ![]() |
![]() |
| Fill Annotations | ![]() |
![]() |
| Offline | ![]() |
![]() |
| Viewport | ![]() |
![]() |
| Style DSL | ![]() |
![]() |
| Expression DSL | ![]() |
![]() |
| View Annotations | ![]() |
![]() |
The Maps Flutter Plugin is compatible with applications:
To run the Maps Flutter Plugin you will need to configure the Mapbox Access Tokens. Read more about access tokens and public/secret scopes at the platform Android or iOS docs.
To access platform SDKs you will need to create a secret access token with the Downloads:Read scope and then:
~/.gradle/gradle.properties : SDK_REGISTRY_TOKEN=YOUR_SECRET_MAPBOX_ACCESS_TOKEN
~/.netrc : machine api.mapbox.com
login mapbox
password YOUR_SECRET_MAPBOX_ACCESS_TOKEN
To instantiate the MapWidget widget pass the public access token with ResourceOptions:
MapWidget(
resourceOptions:
ResourceOptions(accessToken: PUBLIC_ACCESS_TOKEN))));
It’s a good practice to retrieve access tokens from some external source.
You can pass access token via the command line arguments when either building :
flutter build <platform> --dart-define PUBLIC_ACCESS_TOKEN=...
or running the application :
flutter run --dart-define PUBLIC_ACCESS_TOKEN=...
You can also persist token in launch.json :
"configurations": [
{
...
"args": [
"--dart-define", "PUBLIC_ACCESS_TOKEN=..."
],
}
]
Then to retrieve the token from the environment in the application :
String ACCESS_TOKEN = String.fromEnvironment("PUBLIC_ACCESS_TOKEN");
To use the Maps Flutter Plugin add the git dependency to the pubspec.yaml:
dependencies:
mapbox_maps_flutter: ^0.5.1
You will need to grant location permission in order to use the location component of the Maps Flutter Plugin.
You can use an existing library to request location permission, e.g. with permission_handler await Permission.locationWhenInUse.request(); will trigger permission request.
You also need to declare the permission for both platforms :
Add the following permissions to the manifest:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Add the following to the Runner/Info.plist to explain why you need access to the location data:
<key>NSLocationWhenInUseUsageDescription</key>
<string>[Your explanation here]</string>
Import mapbox_maps_flutter library and add a simple map:
import 'package:flutter/material.dart';
import 'package:mapbox_maps_flutter/mapbox_maps_flutter.dart';
void main() {
runApp(MaterialApp(
home: MapWidget(
resourceOptions: ResourceOptions(accessToken: YOUR_ACCESS_TOKEN))));
}
The MapWidget widget provides options to customize the map – you can set ResourceOptions, MapOptions, CameraOptions, styleURL.
It also allows or add listeners for various events – related to style loading, map rendering, map loading.
The MapboxMap controller instance is provided with MapWidget.onMapCreated callback.
MapboxMap exposes an entry point to the most of the APIs Maps Flutter Plugin provides. It allows to control the map, camera, styles, observe map events, query rendered features, etc.
It’s organized similarly to the Android and iOS counterparts.
To interact with the map after it’s created store the MapboxMap object somewhere :
class FullMap extends StatefulWidget {
const FullMap();
@override
State createState() => FullMapState();
}
class FullMapState extends State<FullMap> {
MapboxMap? mapboxMap;
_onMapCreated(MapboxMap mapboxMap) {
this.mapboxMap = mapboxMap;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: MapWidget(
key: ValueKey("mapWidget"),
resourceOptions: ResourceOptions(accessToken: ACCESS_TOKEN),
onMapCreated: _onMapCreated,
));
}
}
To observe the user’s location and show the location indicator on the map use LocationComponentSettingsInterface accessible via MapboxMap.location.
You need to grant location permission prior to using location component (as explained before).
To customize the appearance of the location puck call MapboxMap.location.updateSettings method.
To use the 3D puck with model downloaded from Uri instead of the default 2D puck :
mapboxMap.location.updateSettings(LocationComponentSettings(
locationPuck: LocationPuck(
locationPuck3D: LocationPuck3D(
modelUri:
"https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Duck/glTF-Embedded/Duck.gltf",))));
You can find more examples of customization in the sample app.
You have several options to add annotations on the map.
To create 5 point annotations using custom icon:
mapboxMap.annotations.createPointAnnotationManager().then((pointAnnotationManager) async {
final ByteData bytes =
await rootBundle.load('assets/symbols/custom-icon.png');
final Uint8List list = bytes.buffer.asUint8List();
var options = <PointAnnotationOptions>[];
for (var i = 0; i < 5; i++) {
options.add(PointAnnotationOptions(
geometry: createRandomPoint().toJson(), image: list));
}
pointAnnotationManager?.createMulti(options);
});
You can find more examples of the AnnotationManagers usage in the sample app : point annotations, circle annotations, polygon annotations, polyline annotations.
The Mapbox Maps Flutter Plugin allows full customization of the look of the map used in your application.
You can specify the initial style uri at MapWidget.styleUri, or load it at runtime using MapboxMap.loadStyleURI / MapboxMap.loadStyleJson :
mapboxMap.loadStyleURI(Styles.LIGHT);
You can familiarize with the concept of sources, layers and their supported types in the platform documentation.
To add, remove or change a source or a layer use the MapboxMap.style object.
To add a GeoJsonSource and a LineLayer using the source :
var data = await rootBundle.loadString('assets/polyline.geojson');
await mapboxMap.style.addSource(GeoJsonSource(id: "line", data: data));
await mapboxMap.style.addLayer(LineLayer(
id: "line_layer",
sourceId: "line",
lineJoin: LineJoin.ROUND,
lineCap: LineCap.ROUND,
lineOpacity: 0.7,
lineColor: Colors.red.value,
lineWidth: 8.0));
You can change the appearance of a layer based on properties in the layer’s data source or zoom level. Refer to the documentation for the description of supported expressions. To apply an expression to interpolate gradient color to a line layer:
mapboxMap.style.setStyleLayerProperty("layer", "line-gradient",
'["interpolate",["linear"],["line-progress"],0.0,["rgb",6,1,255],0.5,["rgb",0,255,42],0.7,["rgb",255,252,0],1.0,["rgb",255,30,0]]');
Platform docs : Android, iOS. The camera is the user’s viewpoint above the map. The Maps Flutter Plugin provides you with options to set and adjust the camera position, listen for camera changes, get the camera position, and restrict the camera position to set bounds.
You can set the starting camera position using MapWidget.cameraOptions :
MapWidget(
key: ValueKey("mapWidget"),
resourceOptions: ResourceOptions(accessToken: ACCESS_TOKEN),
cameraOptions: CameraOptions(
center: Point(coordinates: Position(-80.1263, 25.7845)).toJson(),
zoom: 12.0),
));
or update it at runtime using MapboxMap.setCamera :
MapboxMap.setCamera(CameraOptions(
center: Point(coordinates: Position(-80.1263, 25.7845)).toJson(),
zoom: 12.0));
You can find more examples of interaction with the camera in the sample app.
Camera animations are the means by which camera settings are changed from old values to new values over a period of time. You can animate the camera using flyTo or easeTo and move to a new center location, update the bearing, pitch, zoom, padding, and anchor.
To start a flyTo animation to the specific camera options :
mapboxMap?.flyTo(
CameraOptions(
anchor: ScreenCoordinate(x: 0, y: 0),
zoom: 17,
bearing: 180,
pitch: 30),
MapAnimationOptions(duration: 2000, startDelay: 0));
You can find more examples of animations in the sample app.
Users interacting with the map in your application can explore the map by performing standard gestures.
You can retrieve or update the GestureSettings using MapboxMap.gestures.
You can observe gesture events using MapWidget.onTapListener, MapWidget.onLongTapListener, MapWidget.onScrollListener.
The post Mapbox Maps SDK Flutter Plugin appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post LaLa Trainers Launcher appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
.
Thank You, Gaming CommunityAfter posting Reddit threads introducing LaLa, I received valuable feedback and input from many gamers. I want to express my gratitude to all of you.
Below is a list of to-do items based on the feedback I’ve received:
Screenshots
Supported platforms
InstallationYou can download prebuilt binaries directly from GitHub releases or BiliBili
sudo dpkg -i LaLa_linux_amd64.deb
or
sudo apt install ./LaLa_linux_amd64.deb
or
flatpak install --user LaLa_linux_amd64.flatpak
or
run LaLa_linux_amd64.AppImage directly🥰
flatpak install --user LaLa_linux_amd64.flatpak
or
run LaLa_linux_amd64.AppImage directly🥰
Important notice for Linux userThe LaLa Launcher for Linux relies on Proton to run trainers. To use trainers, you must:
FAQLaLa Trainers Launcher is an open-source software developed using Flutter. Any security warning you encounter during installation is a false positive from your system. You can safely proceed with the installation.
Most of the trainers used by LaLa Trainers Launcher are sourced from Fling Trainers, and a few are from open-source cheat tables that I’ve collected.
While every effort is made to ensure their safety, please use them responsibly, and be aware that the use of trainers can carry risks.
On Windows, the cache data is located in the %LOCALAPPDATA%/com.aironheart.lala directory.
On Linux, it can be found in either $XDG_CACHE_HOME/com.aironheart.lala or ~/.cache/com.aironheart.lala.
It’s named after my love for the movie “La La Land”. I hope you can enjoy using the software.
SupportLaLa Trainers Launcher is an open-source project that runs on donations.
The post LaLa Trainers Launcher appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Nylo project for Flutter developers appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Nylo is a micro-framework for Flutter that is designed to help simplify developing apps. Every project provides a simple boilerplate and MVC pattern to help you build apps more easily.
This project is open-source and MIT-licenced, we welcome any contributions. You can join as a backer/sponsor to fund future development for this project here
Some core features available
git clone https://github.com/nylo-core/nylo.git
View our docs and visit nylo.dev
Please see CHANGELOG for more information on what has changed recently.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The post Nylo project for Flutter developers appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Explore Blur Effect appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>A collection of common blur effects, serving as a practical guide for integration into your projects.

A hands-on app to visually grasp how blur effects transform pictures.
A best effort replicate(sort of) the captivating name drop animation seen in iOS 17. it needs more work to look close to the real one which is not open source (obviously).
iOS 17’s elegant faded gradient effect. by using one of the common blur effects and changing it a bit.
I have few more upcoming demos to show (I didn’t get the time to finish them before the meetup)! Star and watch the repo to keep up with the latest demos and updates.
The post Explore Blur Effect appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A simple app that allows you create events appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Welcome to Calentre, the open-source alternative to Calendly!
Manage your appointments, get paid, and enjoy the scheduling experience.


Calentre is your go-to scheduling solution, offering a delightful way to book meetings and collect payments!
Whether you’re a consultant, freelancer, or professional, we’ve got you covered.



Calentre’s magic is built using:

Calentre embraces the Clean Architecture principles, keeping things neat and organized.
Enjoy a clean and maintainable codebase! For details, see our Architecture Guide

Ready to dive in? Let’s go:
git clone https://github.com/fiizzy/calentre.gitcd calentreflutter pub getflutter runFor details, see our Getting Started Guide.

Using Calentre is a breeze:
For more, check the User Guide.
The post A simple app that allows you create events appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Firebase Admin Node.js SDK appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>Firebase provides the tools and infrastructure you need to develop your app, grow your user base, and earn money. The Firebase Admin Node.js SDK enables access to Firebase services from privileged environments (such as servers or cloud) in Node.js.
For more information, visit the Firebase Admin SDK setup guide.
The Firebase Admin Node.js SDK is available on npm as firebase-admin:
$ npm install --save firebase-admin
To use the module in your application, require it from any JavaScript file:
const { initializeApp } = require("firebase-admin/app");
initializeApp();
If you are using ES2015, you can import the module instead:
import { initializeApp } from "firebase-admin/app";
initializeApp();
Please refer to the CONTRIBUTING page for more information about how you can contribute to this project. We welcome bug reports, feature requests, code review feedback, and also pull requests.
We support Node.js 14 and higher.
Please also note that the Admin SDK should only be used in server-side/back-end environments controlled by the app developer. This includes most server and serverless platforms (both on-premise and in the cloud). It is not recommended to use the Admin SDK in client-side environments.
Thanks to the team at Casetext for transferring ownership of the firebase-admin npm module over to the Firebase team and for their longtime use and support of the Firebase platform.
Firebase Admin Node.js SDK is licensed under the Apache License, version 2.0.
Your use of Firebase is governed by the Terms of Service for Firebase Services.
The post Firebase Admin Node.js SDK appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A Firebase Admin SDK for Dart appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>Welcome! This project is a port of Node’s Firebase Admin SDK to Dart.
This project is still in its early stages, and some features may be missing or bugged. Currently, only Firestore is available, with more to come (auth next).
service-account.json file| Firestore | |
|---|---|
| reference.id | ![]() |
| reference.parent | ![]() |
| reference.path | ![]() |
| reference.== | ![]() |
| reference.withConverter | ![]() |
| collection.listDocuments | ![]() |
| collection.add | ![]() |
| collection.get | ![]() |
| collection.create | ![]() |
| collection.delete | ![]() |
| collection.set | ![]() |
| collection.update | ![]() |
| collection.collection | ![]() |
| query.where(‘field’, operator, value) | ![]() |
| query.where(‘field.path’, operator, value) | ![]() |
| query.where(FieldPath(‘…’), operator, value) | ![]() |
| query.whereFilter(Filter.and(a, b)) | ![]() |
| query.whereFilter(Filter.or(a, b)) | ![]() |
| query.startAt | ![]() |
| query.startAtDocument | ![]() |
| query.startAfter | ![]() |
| query.startAfterDocument | ![]() |
| query.endAt | ![]() |
| query.endAtDocument | ![]() |
| query.endAfter | ![]() |
| query.endAfterDocument | ![]() |
| query.onSnapshot | ![]() |
| query.select | ![]() |
| query.orderBy | ![]() |
| query.limit | ![]() |
| query.limitToLast | ![]() |
| query.offset | ![]() |
| querySnapshot.docs | ![]() |
| querySnapshot.readTime | ![]() |
| querySnapshot.docsChange | ![]() |
| documentSnapshots.data | ![]() |
| documentSnapshots.readTime/createTime/updateTime | ![]() |
| documentSnapshots.id | ![]() |
| documentSnapshots.exists | ![]() |
| documentSnapshots.data | ![]() |
| documentSnapshots.get(fieldPath) | ![]() |
| FieldValue.documentId | ![]() |
| FieldValue.increment | ![]() |
| FieldValue.arrayUnion | ![]() |
| FieldValue.arrayRemove | ![]() |
| FieldValue.delete | ![]() |
| FieldValue.serverTimestamp | ![]() |
| collectionGroup | ![]() |
| runTransaction | ![]() |
| GeoPoint | ![]() |
| Timestamp | ![]() |
| BundleBuilder | ![]() |
| Auth | |
|---|---|
| auth.tenantManager | ![]() |
| auth.projectConfigManager | ![]() |
| auth.generatePasswordResetLink | ![]() |
| auth.generateEmailVerificationLink | ![]() |
| auth.generateVerifyAndChangeEmailLink | ![]() |
| auth.generateSignInWithEmailLink | ![]() |
| auth.listProviderConfigs | ![]() |
| auth.createProviderConfig | ![]() |
| auth.updateProviderConfig | ![]() |
| auth.getProviderConfig | ![]() |
| auth.deleteProviderConfig | ![]() |
| auth.createCustomToken | ![]() |
| auth.setCustomUserClaims | ![]() |
| auth.verifyIdToken | ![]() |
| auth.revokeRefreshTokens | ![]() |
| auth.createSessionCookie | ![]() |
| auth.verifySessionCookie | ![]() |
| auth.importUsers | ![]() |
| auth.listUsers | ![]() |
| auth.deleteUser | ![]() |
| auth.deleteUsers | ![]() |
| auth.getUser | ![]() |
| auth.getUserByPhoneNumber | ![]() |
| auth.getUserByEmail | ![]() |
| auth.getUserByProviderUid | ![]() |
| auth.getUsers | ![]() |
| auth.createUser | ![]() |
| auth.updateUser | ![]() |
Before using Firebase, we must first authenticate.
There are currently two options:
service-account.json fileTo connect using environment variables, you will need to have the Firebase CLI installed.
Once done, you can run:
firebase login
And log-in to the project of your choice.
From there, you can have your Dart program authenticate using the environment with:
import 'package:dart_firebase_admin/dart_firebase_admin.dart';
void main() {
final admin = FirebaseAdminApp.initializeApp(
'<your project name>',
// This will obtain authentication information from the environment
Credential.fromApplicationDefaultCredentials(),
);
// TODO use the Admin SDK
final firestore = Firestore(admin);
firestore.doc('hello/world').get();
}
service-account.json fileAlternatively, you can choose to use a service-account.json file.
This file can be obtained in your firebase console by going to:
https://console.firebase.google.com/u/0/project/<your-project-name>/settings/serviceaccounts/adminsdk
Make sure to replace <your-project-name> with the name of your project. One there, follow the steps and download the file. Place it anywhere you want in your project.
Note: This file should be kept private. Do not commit it on public repositories.
After all of that is done, you can now authenticate in your Dart program using:
import 'package:dart_firebase_admin/dart_firebase_admin.dart';
void main() {
final admin = FirebaseAdminApp.initializeApp(
'<your project name>',
// Log-in using the newly downloaded file.
Credential.fromServiceAccount(
File('<path to your service-account.json file>'),
),
);
// TODO use the Admin SDK
final firestore = Firestore(admin);
firestore.doc('hello/world').get();
}
First, make sure to follow the steps on how to authenticate. You should now have an instance of a FirebaseAdminApp object.
You can now use this object to create a Firestore object as followed:
// Obtained in the previous steps
FirebaseAdminApp admin;
final firestore = Firestore(admin);
From this point onwards, using Firestore with the admin ADK is roughly equivalent to using FlutterFire.
Using this Firestore object, you’ll find your usual collection/query/document objects.
For example, you can perform a where query:
// The following lists all users above 18 years old
final collection = firestore.collection('users');
final adults = collection.where('age', WhereFilter.greaterThan, 18);
final adultsSnapshot = await adults.get();
for (final adult in adultsSnapshot.docs) {
print(adult.data()['age']);
}
Composite queries are also supported:
// List users with either John or Jack as first name.
firestore
.collection('users')
.whereFilter(
Filter.or([
Filter.where('firstName', WhereFilter.equal, 'John'),
Filter.where('firstName', WhereFilter.equal, 'Jack'),
]),
);
Alternatively, you can fetch a specific document too:
// Print the age of the user with ID "123"
final user = await firestore.doc('users/123').get();
print(user.data()?['age']);
First, make sure to follow the steps on how to authenticate. You should now have an instance of a FirebaseAdminApp object.
You can now use this object to create a FirebaseAuth object as followed:
// Obtained in the previous steps
FirebaseAdminApp admin;
final auth = FirebaseAuth(admin);
You can then use this FirebaseAuth object to perform various auth operations. For example, you can generate a password reset link:
final link = await auth.generatePasswordResetLink(
'[email protected]',
);
The post A Firebase Admin SDK for Dart appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Ubuntu Desktop Provision appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Supported formats:
TOML (.conf)
[bootstrap]
pages = "locale,keyboard,source,storage"
[init]
pages = "timezone,identity"
YAML (.yaml, .yml)
bootstrap:
pages:
- locale
- keyboard
- source
- storage
init:
pages:
- timezone
- identity
Lookup order:
/etc/ubuntu-provision.{conf,yaml,yml} (admin)/usr/local/share/ubuntu-provision.{conf,yaml,yml} (oem)/usr/share/ubuntu-provision.{conf,yaml,yml} (distro)<app>/data/flutter_assets/ubuntu-provision.{conf,yaml,yml} (app)This project is being translated using Weblate, a web tool designed to ease translating for both developers and translators.
See our contributor guidelines.
The Ubuntu Desktop Provision is licensed under the GNU General Public License version 3.
The post Ubuntu Desktop Provision appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post OpenScribe is an open source editor app appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>OpenScribe is an open-source editor app that aims to replace the standard Windows editor with advanced features.
: Open multiple notes in tabs to switch between them efficiently.
: a custom window, custom colors, light, and dark modes, and multiple fonts for a unique user experience.
: OpenScribe has a built-in keyboard shortcut to get work done.
: The app is intuitive and easy to use, so you can focus on writing.
: OpenScribe is translated into multiple languages.
: OpenScribe has a fast startup time and is lightweight.
: OpenScribe is an open-source project. You can view the source code and contribute to improve the app.Go to the releases and install the latest release. Unzip the .zip file and run openscribe.exe.
Create a new document with Ctrl + N or go to File -> New document
Open an existing document with Ctrl + O or go to File -> Open
Save the document with Ctrl + S or save as with Ctrl + Shift + S
Switch between tabs with Ctrl + Tab or click on the tab
Zoom in with Ctrl + Plus, zoom out with Ctrl + Minus, reset with Ctrl + 0 or go to View -> ...
Open settings with Ctrl + , or click on the top right settings icon
Get information about them with the info icon on the top right under the settings icon, hover over it to get the information
Print the document with Ctrl + P or go to View -> Print
Quit the app with Ctrl + Q
This project is licensed under the MIT license. See the license file for more information.
The post OpenScribe is an open source editor app appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Internet Independent Wireless Mesh Communication App appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>qaul.net, To install and run qaul please see the Documentation.
qaul is a fully free and open source software. It is published under the AGPLv3, the GNU Affero General Public License version 3 or later.
Please see the licenses folder for in depth information on qaul’s licenses.
Committing and contributing to this project, you agree to transfer the full copyright of all your contributions to the ‘Verein zur Förderung von offenen Community-Projekten‘ in Switzerland (English name: Open Community Project Association). This transfer includes the transfer of the following rights: the right to distribute the work, the right to modify the work, the right to enforce the copyright, the right to change the license of the work, the right to transfer ownership of the work as well as all exploitation rights of the work.
https://github.com/qaul/qaul.net
The post Internet Independent Wireless Mesh Communication App appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post ONNX runtime for Flutter appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Run ML models natively on any platform. ONNX models can be run on iOS, Android, Web, Linux, Windows, and macOS.
FONNX is a Flutter library for running ONNX models. Flutter, and FONNX, run natively on iOS, Android, Web, Linux, Windows, and macOS. FONNX leverages ONNX to provide native acceleration capabilities, from CoreML on iOS, to Android Neural Networks API on Android, to WASM SIMD on Web. Most models can be easily converted to ONNX format, including models from Pytorch, Tensorflow, and more.
Hugging Face has a large collection of models, including many that are ONNX format. 90% of the models are Pytorch, which can be converted to ONNX.
Here is a search for ONNX models.
A command-line tool called optimum-cli from HuggingFace converts Pytorch and Tensorflow models. This covers the vast majority of models. optimum-cli can also quantize models, significantly reduce model size, usually with negligible impact on accuracy.
See official documentation or the quick start snippet on GitHub.
Another tool that automates conversion to ONNX is HFOnnx. It was used to export the text embeddings models in this repo. Its advantages included a significantly smaller model size, and incorporating post-processing (pooling) into the model itself.
These models generate embeddings for text. An embedding is a vector of floating point numbers that represents the meaning of the text.
Embeddings are the foundation of a vector database, as well as retrieval augmented generation – deciding which text snippets to provide in the limited context window of an LLM like GPT.
Running locally using FONNX provides significant privacy benefits, as well as latency benefits. For example, rather than having to store the embedding and text of each chunk of a document on a server, they can be stored on-device. Both MiniLM L6 V2 and MSMARCO MiniLM L6 V3 are both the product of the Sentence Transformers project. Their website has excellent documentation explaining, for instance, semantic search
Trained on a billion sentence pairs from diverse sources, from Reddit to WikiAnswers to StackExchange. MiniLM L6 V2 is well-suited for numerous tasks, from text classification to semantic search. It is optimized for symmetric search, where text is roughly of the same length and meaning. Input text is divided into approximately 200 words, and an embedding is generated for each.
Hugging Face
Trained on pairs of Bing search queries to web pages that contained answers for the query. It is optimized for asymmetric semantic search, matching a search query to an answer. Additionally, it has 2x the input size of MiniLM L6 V2: it can accept up to 400 words as input for one embedding.
Hugging Face
iPhone 14: 67 ms
Pixel Fold: 33 ms
macOS: 13 ms
WASM SIMD: 41 ms
Avg. ms for 1 Mini LM L6 V2 embedding / 200 words.
https://github.com/Telosnex/fonnx
The post ONNX runtime for Flutter appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A Flutter plugin for using iOS ScreenTime API appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>A Flutter plugin for using Screen Time API. Only iOS is supported.
final _screenTimeApiIosPlugin = ScreenTimeApiIos();
_screenTimeApiIosPlugin.selectAppsToDiscourage();
final _screenTimeApiIosPlugin = ScreenTimeApiIos();
_screenTimeApiIosPlugin.encourageAll();
This plugin’s features are not enough. Please contribute to this plugin! 
https://github.com/kboy-silvergym/screen_time_api_ios
The post A Flutter plugin for using iOS ScreenTime API appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Flutter chess game appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>I work with this repo only when I have free time. But I don’t have enough )))
My main Idea is:

|


https://github.com/baticpro/flutter-chess-game-bloc
The post Flutter chess game appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A Resonite Contacts App for Android appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
A Resonite Contacts App for Android
This is a standard Flutter application, refer to the Flutter docs on how to build it.
Currently, only Android is supported.
In theory, this app should also build fine for desktops, though not every feature will be functional. For example, voice messages and notifications are currently not supported on desktop builds.
https://github.com/Nutcake/ReCon
The post A Resonite Contacts App for Android appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Parallax Scroll Effect with PageView in Flutter appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>Big thanks to Marcin Szałek for his article on Medium about this. Want to read it? Here’s the link
https://github.com/abuanwar072/Flutter-Parallax-Effect
The post Parallax Scroll Effect with PageView in Flutter appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Goated dart lang appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Glowup Vibes
Goated
Dart language.
This package is highly inspired by this Babel plugin
See the OG yt short: https://www.youtube.com/watch?v=vgcbwv_3WDU

To get your Glowup Vibes on, make sure you’ve got the Dart SDK installed on your machine.
Install via dart pub add:
dart pub add glowup_vibes

Glowup Vibes is a Dart package that spices up Dart’s lingo with some “internet slang” flavor. 


’cause.

| With rizz | No Rizz (original) |
|---|---|
onGod |
true |
cap |
false |
noCap |
true |
yesnt |
false |
nice |
69 |
outOfPocket |
double.infinity |
F |
Returns a Never. Throws a respectful error. |
imded |
Calls exit with code 1. |
ragequit |
Calls exit with code nice. |
cya |
Calls exit with code 0. |
Based Mason Logger
| With rizz | No Rizz (original) |
|---|---|
lowkey.stan(message) |
logger.info(message) |
lowkey.sus(message) |
logger.warn(message) |
lowkey.cringe(message) |
logger.err(message) |
lowkey.drip(message) |
logger.detail(message) |
lowkey.tea(message) |
logger.success(message) |
lowkey.flex(message) |
logger.success(message) |
| With rizz | No Rizz (original) |
|---|---|
future.letItCook((value) { ... }, ohnoes: () { ... }) |
future.then((value) { ... }, onError: () { ... }) |
future.busted((error) { ... }) |
future.catchError((error) { ... }) |
| With rizz | No Rizz (original) |
|---|---|
'lets go FAM'.lowkey |
lets go fam.toLowerCase() |
'lets go FAM'.highkey |
LETS GO FAM.toUpperCase() |
'lets go FAM'.mock |
lEts gO Fam (spOngE bOB case) |
| With rizz | No Rizz (original) |
|---|---|
fr(assertion) |
assert(assertion); |
cook(value) |
Future.value(value) |
derp(error) |
Future.error(error) |
holdup([future1, future2]) |
Future.wait([future1, future2]) |
yeet(exception) |
throw exception |
brb(Duration(seconds: 1)) |
Future.delayed(Duration(seconds: 1)) |
typah(something) |
Type typah<T>(T wat) => T |
https://github.com/renancaraujo/glowup_vibes
The post Goated dart lang appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A Flutter app that demonstrates Flutter’s ability to create a beautiful UI appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>A demo app that demonstrates Flutter’s ability to create beautiful UI with complex animations. The app fetches recipes from local storage.
Packages| Description | Package |
|---|---|
| Architecture | Reference Architecture |
| State Management | flutter_riverpod |
| Theming | flex_color_scheme |
| animation | flutter_animate & explicit animation |

Project Structure|- assets <- recipe.json and images
|
lib
|
|_ 📁src
|
|__ 📁core
| |__ 📁animation <- page transition
| |__ 📁constants
| |__ 📁theme <- define themes & and colors
| |__ 📁widgets <- widgets that are used in multiple screens
|
|__ 📁onboarding <- onboarding screen and its widgets
|
|__ 📁recipes
|__ 📁domain <- entities
|__ 📁data <- recipe repository (fetch recipes from recipe.json)
|__ 📁presentation <- Home Screen & Recipe Details Screen and other related widgets
Inspiration
LicenseMIT License
https://github.com/Dev-Salem/dribbble_recipe_challenge
The post A Flutter app that demonstrates Flutter’s ability to create a beautiful UI appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A Beautiful and Feature-rich Music Player appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
FeaturesCAN IMPORT YOUTUBE HISTORY.
LASTFM TOO AND MAYBE MORE IN FUTURE.
typically looks (inside the folders you specificed) for any matching title, matching goes as following:
— Alan walker – Faded.m4a
— video alAn WaLkER – faDed (480p).mp4
the video filename should contain at least one of the following:
1. the music filename as shown above.
2. title & first artist of the track.
note: some cleanup is made to improve the matching, all symbols & whitespaces are ignored.
• looks up in the track comment tag (as they are mostly done by @yt-dlp) or filename for any matching youtube link, if found then it starts downloading (and caches) and plays once it’s ready, streaming here isn’t a good idea as the priority goes for the music file itself.
| Animating Thumbnail | Recommends & Listens |
|---|---|
animating_thumbnail_breathing.mp4 |
recommended_listens_history.mp4 |
all_files_access permission (requested when needed)
- editing audio tags
- creating or restoring backups
- saving artworks
- compressing images
- downloading youtube content
Download source code on GitHub
https://github.com/namidaco/namida
The post A Beautiful and Feature-rich Music Player appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post Hacktoberfest 2023 with IEEE-VIT appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>An app to find repositories on Github and to view the various contributors to said repos.
This app aims to simplify the process of finding repositories on GitHub, view the various contributors to the repos, and also allow the user to become a contributor to the desired project.
Support open-source software by participating in Hacktoberfest and get goodies 
Please check all issues labelled as
hacktoberfestto start contributing!
Kindly consider leaving a
if you like the repository and our organization.
Fork it.
Clone your forked repo and move inside it:
git clone https://github.com/<your-github-username>/<repo-name>.git && cd <repo-name>
Checkout to a new branch to work on an issue:
git checkout -b my-amazing-feature
Now you can open the project.
Run flutter pub get in the project terminal and get the dependencies.
Use flutter run debug to run the app in your local emulator.
Once you’re all done coding, it’s time to open a PR
Run the following commands from the root of the project directory:
git add .
git commit -m "A short description about the feature."
git push origin <my-amazing-feature>
Open your forked repo in your browser and then raise a PR to the master branch of this repository!
To start contributing, check out CONTRIBUTING.md. New contributors are always welcome to support this project. If you want something gentle to start with, check out issues labelled as easy or good-first-issue Check out issues labelled as hacktoberfest if you are up for some grabs! 
This project is licensed under MIT
https://github.com/IEEE-VIT/hacktoberfest-flutter
The post Hacktoberfest 2023 with IEEE-VIT appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post A modern E-Commerce mobile application appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Welcome to the Flutter-TDD-Clean-Architecture-E-Commerce-App GitHub repository! This project is a showcase of modern mobile app development practices, leveraging the power of Flutter, Test-Driven Development (TDD), Clean Architecture, and the BLoC (Business Logic Component) package. Built using the latest version of Flutter 3, this E-Commerce application exemplifies best practices for building scalable, maintainable, and efficient Flutter apps.
| Feature | UseCases |
|---|---|
| Product | Get Product UseCase |
| Category | Get Cached Category UseCase Get Remote Category UseCase Filter Category UseCase |
| Cart | Get Cached Cart UseCase Get Remote Cart UseCase Add Cart Item UseCase Sync Cart UseCase |
| User | Get Cached User UseCase SignIn UseCase SignUp UseCase SignOut UseCase |
| Delivery Info | Get Cached Delivery Info UseCase Get Remote Delivery Info UseCase Add Delivery Info UseCase |
| Order | Get Orders UseCase Add Order UseCase |
We welcome contributions from the Flutter community to make this project even better. Whether you are interested in adding new features, fixing bugs, or improving documentation, your contributions are highly appreciated. Please refer to the contribution guidelines in the repository for more details on how to get involved.
To get started with this project, follow the instructions in the README to set up your development environment and run the app locally. You can also explore the project’s architecture, tests, and documentation to gain insights into building robust Flutter apps.
We hope this Flutter-TDD-Clean-Architecture-E-Commerce-App serves as a valuable resource for both Flutter enthusiasts and developers looking to learn about TDD, clean architecture, and BLoC in the context of mobile app development. Happy coding!
git clone https://github.com/Sameera-Perera/Flutter-TDD-Clean-Architecture-E-Commerce-App.git
flutter pub get
flutter run lib/main.dart
flutter test
For help getting started with Flutter, view our online documentation.
Distributed under the MIT License. See LICENSE for more information.
The post A modern E-Commerce mobile application appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>The post An Open Source Social Voice Platform appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>
Resonate – An Open Source Social Voice PlatformWith the rising popularity of social voice platforms such as Clubhouse and Twitter Spaces, it is high time for an Open Source alternative. A platform like this would not only enhance credibility within the open-source community but also attract more users and foster growth. An engagement platform that is Open Source has the potential to drive significant traction and help establish a strong presence.
Features
Technologies Used
Repository Links
App Screenshots
Contributing
Don’t forget to star this repository if you find it useful! 
Thank you for considering contributing to this project! Contributions are highly appreciated and welcomed. To ensure a smooth collaboration, Refer to the Contribution Guidelines.
We appreciate your contributions and look forward to working with you to make this project even better!
By following these guidelines, we can maintain a productive and collaborative open-source environment. Thank you for your support!
The post An Open Source Social Voice Platform appeared first on Flutter Packages | Pub dev Packages - Flutter Mobile App World.
]]>