Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions .idx/dev.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# To learn more about how to use Nix to configure your environment
# see: https://developers.google.com/idx/guides/customize-idx-env
{ pkgs, ... }: {
# Which nixpkgs channel to use.
channel = "stable-24.05"; # or "unstable"
# Use https://search.nixos.org/packages to find packages
packages = [
pkgs.nodePackages.firebase-tools
pkgs.jdk17
pkgs.unzip
];
# Sets environment variables in the workspace
env = {
PATH = ["/home/user/.pub-cache/bin" "/home/user/flutter/bin" "./.flutter-sdk/flutter/bin"];
};
idx = {
# Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
extensions = [
"Dart-Code.flutter"
"Dart-Code.dart-code"
];
workspace = {
# Runs when a workspace is first created with this `dev.nix` file
onCreate = {
build-flutter = ''
cd /home/user/myapp/example/android

./gradlew \
--parallel \
-Pverbose=true \
-Ptarget-platform=android-x86 \
-Ptarget=/home/user/myapp/lib/main.dart \
-Pbase-application-name=android.app.Application \
-Pdart-defines=RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC85NzU1MDkwN2I3MGY0ZjNiMzI4YjZjMTYwMGRmMjFmYWMxYTE4ODlhLw== \
-Pdart-obfuscation=false \
-Ptrack-widget-creation=true \
-Ptree-shake-icons=false \
-Pfilesystem-scheme=org-dartlang-root \
assembleDebug

# TODO: Execute web build in debug mode.
# flutter run does this transparently either way
# https://github.com/flutter/flutter/issues/96283#issuecomment-1144750411
# flutter build web --profile --dart-define=Dart2jsOptimization=O0

adb -s localhost:5555 wait-for-device
'';
installDependencies = "flutter pub get";
};
};
# Enable previews and customize configuration
previews = {
enable = true;
previews = {
web = {
command = ["flutter" "run" "--machine" "-d" "web-server" "--web-hostname" "0.0.0.0" "--web-port" "$PORT"];
manager = "flutter";
cwd = "example";
};
android = {
command = ["flutter" "run" "--machine" "-d" "android" "-d" "localhost:5555"];
manager = "flutter";
cwd = "example";
};
};
};
};
}
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,22 @@ Here's [the online demo](https://flutter-ai-toolkit-examp-60bad.web.app/) hostin
The [source code for this demo](https://github.com/flutter/ai/blob/main/example/lib/demo/demo.dart) is available in the repo.

## Getting started

<a href="https://idx.google.com/new?template=https%3A%2F%2Fgithub.com%2Fflutter%2Fai">
<picture>
<source
media="(prefers-color-scheme: dark)"
srcset="https://cdn.idx.dev/btn/try_light_32.svg">
<source
media="(prefers-color-scheme: light)"
srcset="https://cdn.idx.dev/btn/try_dark_32.svg">
<img
height="32"
alt="Try in IDX"
src="https://cdn.idx.dev/btn/try_purple_32.svg">
</picture>
</a>

Using the AI Toolkit is a matter of choosing which LLM provider you'd like to use (Gemini or Vertex), creating an instance and passing it to the `LlmChatView` widget, which is the main entry point for the AI Toolkit:

```dart
Expand Down
10 changes: 10 additions & 0 deletions idx-template.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "Flutter AI Toolkit",
"description": "Flutter AI Toolkit",
"categories": ["Mobile", "AI & ML"],
"icon": "https://www.gstatic.com/images/branding/productlogos/flutter/v6/192px.svg",
"publisher": "Google LLC",
"host": {
"virtualization": "true"
}
}
30 changes: 30 additions & 0 deletions idx-template.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{ pkgs, ... }: {
packages = [
pkgs.curl
pkgs.unzip
];
bootstrap = ''
mkdir "$out"
cp -rf ${./.}/* "$out"
mkdir "$out/.idx"
mkdir "$out/.vscode"
mkdir "$out/font_svg"
mkdir "$out/lib"
mkdir "$out/example"
cp -rf ${./.}/.idx "$out"
cp -rf ${./.}/.vscode "$out"
cp -rf ${./.}/font_svg "$out"
cp -rf ${./.}/lib "$out"
cp -rf ${./.}/example "$out"
cp -rf ${./.}/README.md "$out"
cp -rf ${./.}/CHANGELOG.md "$out"
cp -rf ${./.}/LICENSE "$out"
cp -rf ${./.}/pubspec.yaml "$out"
cp -rf ${./.}/analysis_options.yaml "$out"
cp -rf ${./.}/.metadata "$out"
cp -rf ${./.}/.gitignore "$out"
rm "$out/idx-template.nix"
rm "$out/idx-template.json"
chmod -R u+w "$out"
'';
}
Loading