├── .cursor
└── rules
│ ├── 1-architecture-overview.mdc
│ ├── 2-chat-controller.mdc
│ ├── 3-customization.mdc
│ ├── 4-core-models.mdc
│ ├── 5-core-values-and-decisions.mdc
│ └── 6-streaming-text-message.mdc
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── analysis_options.yaml
├── banner.png
├── examples
└── flyer_chat
│ ├── .env
│ ├── .gitignore
│ ├── .metadata
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── android
│ ├── .gitignore
│ ├── app
│ │ ├── build.gradle.kts
│ │ └── src
│ │ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin
│ │ │ │ └── flyer
│ │ │ │ │ └── chat
│ │ │ │ │ └── flyer_chat
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── res
│ │ │ │ ├── drawable-v21
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-night
│ │ │ │ └── styles.xml
│ │ │ │ └── values
│ │ │ │ └── styles.xml
│ │ │ └── profile
│ │ │ └── AndroidManifest.xml
│ ├── build.gradle.kts
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ └── settings.gradle.kts
│ ├── assets
│ └── pattern.png
│ ├── integration_test
│ └── list_test.dart
│ ├── ios
│ ├── .gitignore
│ ├── Flutter
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ ├── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ │ └── LaunchImage.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── LaunchImage.png
│ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ └── README.md
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── Runner-Bridging-Header.h
│ └── RunnerTests
│ │ └── RunnerTests.swift
│ ├── lib
│ ├── api
│ │ ├── api.dart
│ │ ├── api_service.dart
│ │ ├── connection_status.dart
│ │ ├── upload_file.dart
│ │ └── websocket_service.dart
│ ├── api_get_chat_id.dart
│ ├── api_get_initial_messages.dart
│ ├── basic.dart
│ ├── create_message.dart
│ ├── gemini.dart
│ ├── gemini_stream_manager.dart
│ ├── hive_chat_controller.dart
│ ├── local.dart
│ ├── main.dart
│ ├── pagination.dart
│ └── widgets
│ │ └── composer_action_bar.dart
│ ├── linux
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ └── runner
│ │ ├── CMakeLists.txt
│ │ ├── main.cc
│ │ ├── my_application.cc
│ │ └── my_application.h
│ ├── macos
│ ├── .gitignore
│ ├── Flutter
│ │ ├── Flutter-Debug.xcconfig
│ │ ├── Flutter-Release.xcconfig
│ │ └── GeneratedPluginRegistrant.swift
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ └── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── app_icon_1024.png
│ │ │ │ ├── app_icon_128.png
│ │ │ │ ├── app_icon_16.png
│ │ │ │ ├── app_icon_256.png
│ │ │ │ ├── app_icon_32.png
│ │ │ │ ├── app_icon_512.png
│ │ │ │ └── app_icon_64.png
│ │ ├── Base.lproj
│ │ │ └── MainMenu.xib
│ │ ├── Configs
│ │ │ ├── AppInfo.xcconfig
│ │ │ ├── Debug.xcconfig
│ │ │ ├── Release.xcconfig
│ │ │ └── Warnings.xcconfig
│ │ ├── DebugProfile.entitlements
│ │ ├── Info.plist
│ │ ├── MainFlutterWindow.swift
│ │ └── Release.entitlements
│ └── RunnerTests
│ │ └── RunnerTests.swift
│ ├── pubspec.yaml
│ ├── web
│ ├── favicon.png
│ ├── icons
│ │ ├── Icon-192.png
│ │ ├── Icon-512.png
│ │ ├── Icon-maskable-192.png
│ │ └── Icon-maskable-512.png
│ ├── index.html
│ └── manifest.json
│ └── windows
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
│ └── runner
│ ├── CMakeLists.txt
│ ├── Runner.rc
│ ├── flutter_window.cpp
│ ├── flutter_window.h
│ ├── main.cpp
│ ├── resource.h
│ ├── resources
│ └── app_icon.ico
│ ├── runner.exe.manifest
│ ├── utils.cpp
│ ├── utils.h
│ ├── win32_window.cpp
│ └── win32_window.h
├── melos.yaml
├── packages
├── cross_cache
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example
│ │ └── README.md
│ ├── lib
│ │ ├── cross_cache.dart
│ │ └── src
│ │ │ ├── cache
│ │ │ ├── base_cache.dart
│ │ │ ├── cache.dart
│ │ │ ├── html.dart
│ │ │ └── io.dart
│ │ │ ├── cached_network_image.dart
│ │ │ └── cross_cache.dart
│ ├── pubspec.yaml
│ └── test
│ │ ├── cross_cache_test.dart
│ │ └── transparent_image.dart
├── flutter_chat_core
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── build.yaml
│ ├── example
│ │ └── README.md
│ ├── lib
│ │ ├── flutter_chat_core.dart
│ │ └── src
│ │ │ ├── chat_controller
│ │ │ ├── chat_controller.dart
│ │ │ ├── chat_operation.dart
│ │ │ ├── in_memory_chat_controller.dart
│ │ │ ├── scroll_to_message_mixin.dart
│ │ │ └── upload_progress_mixin.dart
│ │ │ ├── models
│ │ │ ├── builders.dart
│ │ │ ├── builders.freezed.dart
│ │ │ ├── duration_converter.dart
│ │ │ ├── epoch_date_time_converter.dart
│ │ │ ├── link_preview_data.dart
│ │ │ ├── link_preview_data.freezed.dart
│ │ │ ├── link_preview_data.g.dart
│ │ │ ├── message.dart
│ │ │ ├── message.freezed.dart
│ │ │ ├── message.g.dart
│ │ │ ├── message_group_status.dart
│ │ │ ├── user.dart
│ │ │ ├── user.freezed.dart
│ │ │ └── user.g.dart
│ │ │ ├── theme
│ │ │ ├── chat_theme.dart
│ │ │ ├── chat_theme.freezed.dart
│ │ │ └── chat_theme_extension.dart
│ │ │ └── utils
│ │ │ ├── get_icon_for_status.dart
│ │ │ ├── is_only_emoji.dart
│ │ │ ├── link_preview_position.dart
│ │ │ ├── typedefs.dart
│ │ │ └── user_cache.dart
│ ├── pubspec.yaml
│ └── test
│ │ ├── chat_controller
│ │ ├── in_memory_chat_controller_test.dart
│ │ └── mock_data.dart
│ │ ├── models
│ │ ├── link_preview_data_test.dart
│ │ └── message_test.dart
│ │ └── utils
│ │ └── only_emoji_test.dart
├── flutter_chat_ui
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example
│ │ └── README.md
│ ├── lib
│ │ ├── flutter_chat_ui.dart
│ │ └── src
│ │ │ ├── avatar.dart
│ │ │ ├── chat.dart
│ │ │ ├── chat_animated_list
│ │ │ ├── chat_animated_list.dart
│ │ │ ├── chat_animated_list_reversed.dart
│ │ │ └── sliver_spacing.dart
│ │ │ ├── chat_message
│ │ │ ├── chat_message.dart
│ │ │ └── chat_message_internal.dart
│ │ │ ├── composer.dart
│ │ │ ├── empty_chat_list.dart
│ │ │ ├── is_typing.dart
│ │ │ ├── load_more.dart
│ │ │ ├── scroll_to_bottom.dart
│ │ │ ├── simple_text_message.dart
│ │ │ ├── username.dart
│ │ │ └── utils
│ │ │ ├── composer_height_notifier.dart
│ │ │ ├── keyboard_mixin.dart
│ │ │ ├── load_more_notifier.dart
│ │ │ ├── message_list_diff.dart
│ │ │ └── typedefs.dart
│ └── pubspec.yaml
├── flyer_chat_audio_message
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── flyer_chat_audio_message.dart
│ │ └── src
│ │ │ └── flyer_chat_audio_message.dart
│ └── pubspec.yaml
├── flyer_chat_custom_message
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── flyer_chat_custom_message.dart
│ │ └── src
│ │ │ └── flyer_chat_custom_message.dart
│ └── pubspec.yaml
├── flyer_chat_file_message
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example
│ │ └── README.md
│ ├── lib
│ │ ├── flyer_chat_file_message.dart
│ │ └── src
│ │ │ └── flyer_chat_file_message.dart
│ └── pubspec.yaml
├── flyer_chat_image_message
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example
│ │ └── README.md
│ ├── lib
│ │ ├── flyer_chat_image_message.dart
│ │ └── src
│ │ │ ├── flyer_chat_image_message.dart
│ │ │ └── get_image_dimensions.dart
│ └── pubspec.yaml
├── flyer_chat_location_message
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── flyer_chat_location_message.dart
│ │ └── src
│ │ │ └── flyer_chat_location_message.dart
│ └── pubspec.yaml
├── flyer_chat_system_message
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example
│ │ └── README.md
│ ├── lib
│ │ ├── flyer_chat_system_message.dart
│ │ └── src
│ │ │ └── flyer_chat_system_message.dart
│ └── pubspec.yaml
├── flyer_chat_text_message
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example
│ │ └── README.md
│ ├── lib
│ │ ├── flyer_chat_text_message.dart
│ │ └── src
│ │ │ └── flyer_chat_text_message.dart
│ └── pubspec.yaml
├── flyer_chat_text_stream_message
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example
│ │ └── README.md
│ ├── lib
│ │ ├── flyer_chat_text_stream_message.dart
│ │ └── src
│ │ │ ├── flyer_chat_text_stream_message.dart
│ │ │ ├── stream_state.dart
│ │ │ └── text_segment.dart
│ └── pubspec.yaml
└── flyer_chat_video_message
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── lib
│ ├── flyer_chat_video_message.dart
│ └── src
│ │ └── flyer_chat_video_message.dart
│ └── pubspec.yaml
└── pubspec.yaml
/.cursor/rules/1-architecture-overview.mdc:
--------------------------------------------------------------------------------
1 | ---
2 | description:
3 | globs:
4 | alwaysApply: true
5 | ---
6 | # Flyer Chat - Project Architecture Overview
7 |
8 | The project uses a Melos-managed monorepo structure:
9 |
10 | - `/examples` - Contains demo applications showcasing various features.
11 | - `/packages` - Houses the core and supplementary packages.
12 |
13 | ## Core Packages
14 |
15 | - `packages/flutter_chat_core` ([flutter_chat_core/lib](mdc:packages/flutter_chat_core/lib)) - Provides the foundational models, controllers, and theming utilities. It has minimal dependencies.
16 | - `packages/flutter_chat_ui` ([flutter_chat_ui/lib](mdc:packages/flutter_chat_ui/lib)) - The main UI package containing the primary chat widgets. Also designed with minimal dependencies.
17 | - `packages/cross_cache` ([cross_cache/lib](mdc:packages/cross_cache/lib)) - Handles image caching across different platforms (IO and web).
18 |
19 | ## Message Type Packages
20 |
21 | Additional message types are implemented in separate packages, typically prefixed with `flyer_chat_`. These are optional and allow users to include only the message types they need.
22 |
23 | - Example: `packages/flyer_chat_text_message` ([flyer_chat_text_message/lib](mdc:packages/flyer_chat_text_message/lib))
24 | - Example: `packages/flyer_chat_image_message` ([flyer_chat_image_message/lib](mdc:packages/flyer_chat_image_message/lib))
25 |
26 | Refer to the `packages` directory for a full list.
27 |
28 | ## Key Goal
29 |
30 | Support all Flutter platforms (iOS, Android, Web, macOS, Windows, Linux). Avoid platform-specific imports (like `dart:io`) in core packages.
31 |
--------------------------------------------------------------------------------
/.cursor/rules/2-chat-controller.mdc:
--------------------------------------------------------------------------------
1 | ---
2 | description:
3 | globs:
4 | alwaysApply: true
5 | ---
6 | # Flyer Chat - Chat Controller
7 |
8 | The `ChatController` is the central component for managing message state within the chat UI.
9 |
10 | ## Core Responsibilities
11 |
12 | - Provides methods to add, update, and remove messages.
13 | - Allows both user interactions (e.g., sending a message) and internal updates (e.g., an image message updating its dimensions) to modify the message list.
14 |
15 | ## Implementations
16 |
17 | - **Interface**: Defined in [chat_controller.dart](mdc:packages/flutter_chat_core/lib/src/chat_controller/chat_controller.dart).
18 | - **Default**: `InMemoryChatController` ([in_memory_chat_controller.dart](mdc:packages/flutter_chat_core/lib/src/chat_controller/in_memory_chat_controller.dart)) is provided for easy setup, but it does not persist messages across app restarts.
19 | - **Custom Persistence**: Users are expected to create custom implementations for persistent storage (saving messages). Examples using Sembast ([sembast_chat_controller.dart](mdc:examples/flyer_chat/lib/sembast_chat_controller.dart)) and Hive ([hive_chat_controller.dart](mdc:examples/flyer_chat/lib/hive_chat_controller.dart)) can be found in the `/examples` directory.
20 |
21 | ## Usage
22 |
23 | The `Chat` widget requires a `ChatController` instance to function.
24 |
--------------------------------------------------------------------------------
/.cursor/rules/3-customization.mdc:
--------------------------------------------------------------------------------
1 | ---
2 | description:
3 | globs:
4 | alwaysApply: true
5 | ---
6 | # Flyer Chat - Customization
7 |
8 | Flyer Chat offers extensive customization through two primary mechanisms:
9 |
10 | ## 1. Theming (`ChatTheme`)
11 |
12 | - Controls the overall look and feel (colors, typography, shapes).
13 | - Defined in `flutter_chat_core`:
14 | - [chat_theme.dart](mdc:packages/flutter_chat_core/lib/src/theme/chat_theme.dart)
15 | - [chat_theme_extension.dart](mdc:packages/flutter_chat_core/lib/src/theme/chat_theme_extension.dart)
16 | - Uses Material Design principles.
17 | - Passed to the main `Chat` widget ([chat.dart](mdc:packages/flutter_chat_ui/lib/src/chat.dart)).
18 | - Widgets should use theme values by default but allow overrides via parameters.
19 | - Good example: [simple_text_message.dart](mdc:packages/flutter_chat_ui/lib/src/simple_text_message.dart)
20 |
21 | ## 2. Builders (`Builders`)
22 |
23 | - Allows replacing *any* UI component with a custom implementation.
24 | - The `Builders` model is defined in [builders.dart](mdc:packages/flutter_chat_core/lib/src/models/builders.dart).
25 | - Passed as a parameter to the `Chat` widget ([chat.dart](mdc:packages/flutter_chat_ui/lib/src/chat.dart)).
26 | - Enables swapping out the composer, message bubbles, specific message types (text, image, etc.), date headers, status indicators, and more.
27 | - Provides maximum flexibility for UI modifications.
28 |
--------------------------------------------------------------------------------
/.cursor/rules/4-core-models.mdc:
--------------------------------------------------------------------------------
1 | ---
2 | description:
3 | globs:
4 | alwaysApply: true
5 | ---
6 | # Flyer Chat - Core Data Models
7 |
8 | Core data structures are defined in `flutter_chat_core`.
9 |
10 | ## Message Model
11 |
12 | - Base model for all message types.
13 | - Defined in [message.dart](mdc:packages/flutter_chat_core/lib/src/models/message.dart).
14 | - Contains common fields like `id`, `authorId`, `createdAt`, `roomId`, `type`, `metadata`.
15 | - Includes nullable `DateTime?` fields for status tracking (`sentAt`, `deliveredAt`, `seenAt`, `failedAt`, etc.).
16 | - Specific message types (Text, Image, File, Custom, System, etc.) extend or implement this base structure, often adding type-specific fields (e.g., `text` for `TextMessage`, `source` for `ImageMessage`).
17 |
18 | ## User Model
19 |
20 | - Represents a user in the chat.
21 | - Defined in [user.dart](mdc:packages/flutter_chat_core/lib/src/models/user.dart).
22 | - Contains fields like `id`, `name`, `imageSource`, `role`, `metadata`.
23 |
24 | ## Other Models
25 |
26 | - `ChatTheme`: Configuration for UI styling ([chat_theme.dart](mdc:packages/flutter_chat_core/lib/src/theme/chat_theme.dart)).
27 | - `Builders`: Configuration for custom UI components ([builders.dart](mdc:packages/flutter_chat_core/lib/src/models/builders.dart)).
28 |
--------------------------------------------------------------------------------
/.cursor/rules/5-core-values-and-decisions.mdc:
--------------------------------------------------------------------------------
1 | ---
2 | description:
3 | globs:
4 | alwaysApply: true
5 | ---
6 | # Flyer Chat - Core Values & Architectural Decisions
7 |
8 | ## Core Values
9 |
10 | - **Performance** - Always optimize for performance.
11 | - **Animations** - Smooth, polished animations are essential.
12 | - **Resource Management** - Properly clean up resources (e.g., controllers, streams).
13 | - **Customization** - Provide flexible customization options (Theme, Builders).
14 | - **Modularity** - Extract specific message types to separate packages.
15 | - **Platform Support** - Support all Flutter platforms (avoid `dart:io` in core).
16 |
17 | ## Key Architectural Decisions
18 |
19 | - Minimal dependencies in core packages (`flutter_chat_core`, `flutter_chat_ui`).
20 | - Extraction of message type implementations to optional packages.
21 | - Builder pattern ([builders.dart](mdc:packages/flutter_chat_core/lib/src/models/builders.dart)) for complete customization.
22 | - Using `provider` for state management and dependency injection. Shared logic is registered via `MultiProvider` in the main `Chat` widget ([chat.dart](mdc:packages/flutter_chat_ui/lib/src/chat.dart)).
23 | - Support for both regular and reversed chat list layouts.
24 | - Controller-based state management (`ChatController` interface).
25 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | migrate_working_dir/
12 |
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # The .vscode folder contains launch configuration and tasks you configure in
20 | # VS Code which you may wish to be included in version control, so this line
21 | # is commented out by default.
22 | #.vscode/
23 |
24 | # Flutter/Dart/Pub related
25 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
26 | pubspec.lock
27 | **/doc/api/
28 | **/ios/Flutter/.last_build_id
29 | .dart_tool/
30 | .flutter-plugins
31 | .flutter-plugins-dependencies
32 | .pub-cache/
33 | .pub/
34 | build/
35 |
36 | # Symbolication related
37 | app.*.symbols
38 |
39 | # Obfuscation related
40 | app.*.map.json
41 |
42 | # Android Studio will place build artifacts here
43 | /android/app/debug
44 | /android/app/profile
45 | /android/app/release
46 |
47 | pubspec_overrides.yaml
48 | coverage/
49 |
50 | devtools_options.yaml
51 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:flutter_lints/flutter.yaml
2 |
3 | analyzer:
4 | exclude:
5 | - "**/*.g.dart"
6 | - "**/*.freezed.dart"
7 |
8 | linter:
9 | rules:
10 | - always_declare_return_types
11 | - avoid_unused_constructor_parameters
12 | - directives_ordering
13 | - omit_local_variable_types
14 | - prefer_final_locals
15 | - prefer_relative_imports
16 | - prefer_single_quotes
17 | - sort_pub_dependencies
18 | - type_annotate_public_apis
19 | - unawaited_futures
20 | - use_named_constants
21 |
--------------------------------------------------------------------------------
/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/banner.png
--------------------------------------------------------------------------------
/examples/flyer_chat/.env:
--------------------------------------------------------------------------------
1 | DEFAULT_CHAT_ID=
2 | GEMINI_API_KEY=
3 |
--------------------------------------------------------------------------------
/examples/flyer_chat/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .build/
9 | .buildlog/
10 | .history
11 | .svn/
12 | .swiftpm/
13 | migrate_working_dir/
14 |
15 | # IntelliJ related
16 | *.iml
17 | *.ipr
18 | *.iws
19 | .idea/
20 |
21 | # The .vscode folder contains launch configuration and tasks you configure in
22 | # VS Code which you may wish to be included in version control, so this line
23 | # is commented out by default.
24 | #.vscode/
25 |
26 | # Flutter/Dart/Pub related
27 | **/doc/api/
28 | **/ios/Flutter/.last_build_id
29 | .dart_tool/
30 | .flutter-plugins
31 | .flutter-plugins-dependencies
32 | .pub-cache/
33 | .pub/
34 | /build/
35 |
36 | # Symbolication related
37 | app.*.symbols
38 |
39 | # Obfuscation related
40 | app.*.map.json
41 |
42 | # Android Studio will place build artifacts here
43 | /android/app/debug
44 | /android/app/profile
45 | /android/app/release
46 |
47 | DerivedData/
48 | .env
49 |
--------------------------------------------------------------------------------
/examples/flyer_chat/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: "8defaa71a77c16e8547abdbfad2053ce3a6e2d5b"
8 | channel: "stable"
9 |
10 | project_type: app
11 |
12 | # Tracks metadata for the flutter migrate command
13 | migration:
14 | platforms:
15 | - platform: root
16 | create_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
17 | base_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
18 | - platform: android
19 | create_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
20 | base_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
21 | - platform: ios
22 | create_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
23 | base_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
24 | - platform: linux
25 | create_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
26 | base_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
27 | - platform: macos
28 | create_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
29 | base_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
30 | - platform: web
31 | create_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
32 | base_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
33 | - platform: windows
34 | create_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
35 | base_revision: 8defaa71a77c16e8547abdbfad2053ce3a6e2d5b
36 |
37 | # User provided section
38 |
39 | # List of Local paths (relative to this file) that should be
40 | # ignored by the migrate tool.
41 | #
42 | # Files that are not part of the templates will be ignored by default.
43 | unmanaged_files:
44 | - 'lib/main.dart'
45 | - 'ios/Runner.xcodeproj/project.pbxproj'
46 |
--------------------------------------------------------------------------------
/examples/flyer_chat/README.md:
--------------------------------------------------------------------------------
1 | # flyer_chat
2 |
3 | A new Flutter project.
4 |
5 | ## Getting Started
6 |
7 | This project is a starting point for a Flutter application.
8 |
9 | A few resources to get you started if this is your first Flutter project:
10 |
11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
13 |
14 | For help getting started with Flutter development, view the
15 | [online documentation](https://docs.flutter.dev/), which offers tutorials,
16 | samples, guidance on mobile development, and a full API reference.
17 |
--------------------------------------------------------------------------------
/examples/flyer_chat/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: ../../analysis_options.yaml
2 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 | .cxx/
9 |
10 | # Remember to never publicly share your keystore.
11 | # See https://flutter.dev/to/reference-keystore
12 | key.properties
13 | **/*.keystore
14 | **/*.jks
15 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("com.android.application")
3 | id("kotlin-android")
4 | // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
5 | id("dev.flutter.flutter-gradle-plugin")
6 | }
7 |
8 | android {
9 | namespace = "flyer.chat.flyer_chat"
10 | compileSdk = flutter.compileSdkVersion
11 | ndkVersion = flutter.ndkVersion
12 |
13 | compileOptions {
14 | sourceCompatibility = JavaVersion.VERSION_11
15 | targetCompatibility = JavaVersion.VERSION_11
16 | }
17 |
18 | kotlinOptions {
19 | jvmTarget = JavaVersion.VERSION_11.toString()
20 | }
21 |
22 | defaultConfig {
23 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
24 | applicationId = "flyer.chat.flyer_chat"
25 | // You can update the following values to match your application needs.
26 | // For more information, see: https://flutter.dev/to/review-gradle-config.
27 | minSdk = 23
28 | targetSdk = flutter.targetSdkVersion
29 | versionCode = flutter.versionCode
30 | versionName = flutter.versionName
31 | }
32 |
33 | buildTypes {
34 | release {
35 | // TODO: Add your own signing config for the release build.
36 | // Signing with the debug keys for now, so `flutter run --release` works.
37 | signingConfig = signingConfigs.getByName("debug")
38 | }
39 | }
40 | }
41 |
42 | flutter {
43 | source = "../.."
44 | }
45 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
15 |
19 |
23 |
24 |
25 |
26 |
27 |
28 |
30 |
33 |
34 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/kotlin/flyer/chat/flyer_chat/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package flyer.chat.flyer_chat
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity : FlutterActivity()
6 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get()
9 | rootProject.layout.buildDirectory.value(newBuildDir)
10 |
11 | subprojects {
12 | val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
13 | project.layout.buildDirectory.value(newSubprojectBuildDir)
14 | }
15 | subprojects {
16 | project.evaluationDependsOn(":app")
17 | }
18 |
19 | tasks.register("clean") {
20 | delete(rootProject.layout.buildDirectory)
21 | }
22 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
6 |
--------------------------------------------------------------------------------
/examples/flyer_chat/android/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | val flutterSdkPath = run {
3 | val properties = java.util.Properties()
4 | file("local.properties").inputStream().use { properties.load(it) }
5 | val flutterSdkPath = properties.getProperty("flutter.sdk")
6 | require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
7 | flutterSdkPath
8 | }
9 |
10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
11 |
12 | repositories {
13 | google()
14 | mavenCentral()
15 | gradlePluginPortal()
16 | }
17 | }
18 |
19 | plugins {
20 | id("dev.flutter.flutter-plugin-loader") version "1.0.0"
21 | id("com.android.application") version "8.7.3" apply false
22 | id("org.jetbrains.kotlin.android") version "2.1.0" apply false
23 | }
24 |
25 | include(":app")
26 |
--------------------------------------------------------------------------------
/examples/flyer_chat/assets/pattern.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/assets/pattern.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 12.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | # platform :ios, '12.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def flutter_root
14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 | unless File.exist?(generated_xcode_build_settings_path)
16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 | end
18 |
19 | File.foreach(generated_xcode_build_settings_path) do |line|
20 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 | return matches[1].strip if matches
22 | end
23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 | end
25 |
26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 |
28 | flutter_ios_podfile_setup
29 |
30 | target 'Runner' do
31 | use_frameworks!
32 |
33 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
34 | target 'RunnerTests' do
35 | inherit! :search_paths
36 | end
37 | end
38 |
39 | post_install do |installer|
40 | installer.pods_project.targets.each do |target|
41 | flutter_additional_ios_build_settings(target)
42 | end
43 | end
44 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 |
4 | @main
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flyerhq/flutter_chat_ui/4fe6b2049f242a507a26ce09a016fe5d6929f750/examples/flyer_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | Flyer Chat
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | flyer_chat
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(FLUTTER_BUILD_NAME)
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | $(FLUTTER_BUILD_NUMBER)
25 | LSRequiresIPhoneOS
26 |
27 | NSCameraUsageDescription
28 | Example
29 | NSPhotoLibraryUsageDescription
30 | Example
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | UIMainStoryboardFile
34 | Main
35 | UISupportedInterfaceOrientations
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationLandscapeLeft
39 | UIInterfaceOrientationLandscapeRight
40 |
41 | UISupportedInterfaceOrientations~ipad
42 |
43 | UIInterfaceOrientationPortrait
44 | UIInterfaceOrientationPortraitUpsideDown
45 | UIInterfaceOrientationLandscapeLeft
46 | UIInterfaceOrientationLandscapeRight
47 |
48 | CADisableMinimumFrameDurationOnPhone
49 |
50 | UIApplicationSupportsIndirectInputEvents
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/examples/flyer_chat/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/examples/flyer_chat/lib/api/api_service.dart:
--------------------------------------------------------------------------------
1 | import 'package:dio/dio.dart';
2 | import 'package:flutter_chat_core/flutter_chat_core.dart';
3 |
4 | class ApiService {
5 | final String baseUrl;
6 | final String chatId;
7 | final Dio dio;
8 |
9 | ApiService({required this.baseUrl, required this.chatId, required this.dio});
10 |
11 | Future