Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
stream-ci-bot committed Aug 14, 2024
1 parent e103ed7 commit a20c633
Show file tree
Hide file tree
Showing 113 changed files with 7,582 additions and 3 deletions.
6 changes: 5 additions & 1 deletion docusaurus/flutter-docusaurus-dontent-docs.plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = {
lastVersion: 'current',
versions: {
current: {
label: 'v7'
label: 'v8'
},
'3.x.x': {
label: 'v3',
Expand All @@ -19,6 +19,10 @@ module.exports = {
'5.x.x': {
label: 'v5',
path: 'v5'
},
'7.x.x': {
label: 'v7',
path: 'v7'
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
id: installation
title: Installation
---

Choosing The Right Flutter Package

### Why the SDK is split into different packages

Different applications need different levels of customization and integration with the Stream Chat SDK.
To do this, the Flutter SDK is split into three different packages which build upon the last and give
varying levels of control to the developer. The higher level packages offer better compatibility out of the
box while the lower level SDKs offer fine grained control. There is also a separate package for persistence
which allows you persist data locally which works with all packages.

### How do I choose?

#### The case for `stream_chat_flutter`

For the quickest way to integrate Stream Chat with your app, the UI SDK (`stream_chat_flutter`) is the
way to go. `stream_chat_flutter` contains prebuilt components that manage most operations like data
fetching, pagination, sending a message, and more. This ensures you have a nearly out-of-the-box
experience adding chat to your applications. It is also possible to use this in conjunction with
lower level operations of the SDK to get the best of both worlds.

:::note
The package allows customization of components to a large extent making it easy to tweak the theme
to match your app colors and such. If you require any additional feature or customization, feel free
to request this through our support channels.
:::

<b>Summary:</b>

For the quickest and easiest way to add Chat to your app with prebuilt UI components, use `stream_chat_flutter`


#### The case for `stream_chat_flutter_core`

If your application involves UI that does not fit in with the `stream_chat_flutter` components, `stream_chat_flutter_core`
strips away the UI associated with the components and provides the data fetching and manipulation
capabilities while supplying builders for UI. This allows you to implement your own UI and themes
completely independently while not worrying about writing functions for data and pagination.

<b>Summary:</b>

For implementing your own custom UI while not having to worry about lower level API calls, use `stream_chat_flutter_core`.

#### The case for `stream_chat`

The `stream_chat` package is the Low-level Client (LLC) of Stream Chat in Flutter. This package wraps
the underlying functionality of Stream Chat and allows the most customization in terms of UI, data,
and architecture.

<b>Summary:</b>

For the most control over the SDK and dealing with low level calls to the API, use `stream_chat`.

### Versioning Policy

All of the Stream Chat packages follow [semantic versioning](https://semver.org/).

That means that with a version number x.y.z (major.minor.patch):
- When releasing bug fixes (backwards compatible), we make a patch release by changing the z number (ex: 3.6.2 to 3.6.3). A bug fix is defined as an internal change that fixes incorrect behavior.
- When releasing new features or non-critical fixes, we make a minor release by changing the y number (ex: 3.6.2 to 3.7.0).
- When releasing breaking changes (backward incompatible), we make a major release by changing the x number (ex: 3.6.2 to 4.0.0).

See the [semantic versioning](https://dart.dev/tools/pub/versioning#semantic-versions) section from the Dart docs for more information.

This versioning policy does not apply to prerelease packages (below major version of 1). See this
[StackOverflow thread](https://stackoverflow.com/questions/66201337/how-do-dart-package-versions-work-how-should-i-version-my-flutter-plugins)
for more information on Dart package versioning.

Whenever possible, we will add deprecation warnings in preparation for future breaking changes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
slug: /
id: introduction
title: Overview
---
About The Flutter SDK

![](../assets/sdk_title.png)

Stream Chat is a service that helps you easily build a full chat experience in your Flutter apps.
We also support a variety of other SDKs.

This section of the documentation focuses on our Flutter SDK which helps you easily
ship high quality messaging experiences in apps and programs built with the [Flutter toolkit
made by Google](https://flutter.dev).

The Stream Chat Flutter SDK comprises five different packages to choose from, ranging from ones
giving you complete control to ones that give you a rich out-of-the-box chat experience.

The packages that make up the Stream Chat SDK are:

1. <b>Low Level Client (`stream_chat`)</b>: a pure Dart package that can be used on any Dart project.
It provides a low-level client to access the Stream Chat service.
2. <b>Core (`stream_chat_flutter_core`)</b>: provides business logic to fetch common things required
for integrating Stream Chat into your application.
The core package allows more customisation and hence provides business logic but no UI components.
3. <b>UI (`stream_chat_flutter`)</b>: this library includes both a low-level chat SDK and a set of
reusable and customizable UI components.
4. <b>Persistence (`stream_chat_persistence`)</b>: provides a persistence client for fetching and
saving chat data locally.
5. <b>Localizations (`stream_chat_localizations`)</b>: provides a set of localizations for the SDK.

We recommend building prototypes using the full UI package, [`stream_chat_flutter`](https://pub.dev/packages/stream_chat_flutter),
since it contains UI widgets already integrated with Stream's API. It is the fastest way to get up
and running using Stream chat in your app.

The Flutter SDK enables you to build any type of chat or messaging experience for Android, iOS, Web
and Desktop.

If you're building a very custom UI and would prefer a more lean package,
[`stream_chat_flutter_core`](https://pub.dev/packages/stream_chat_flutter_core) will be suited to this
use case. Core allows you to build custom, expressive UIs while retaining the benefits of our full
Flutter SDK. APIs for accessing and controlling users, sending messages, and so forth are seamlessly integrated
into this package and accessible via providers and builders.

Before going into the docs, let's take a small detour to look at how the elements of Stream Chat are structured.

### Basic Structure

There are two core elements in chat, <b>Users</b> and <b>Channels</b>.
Channels are groups of one or more users that can message each other.
In an app, you need to have a user connected to query channels.

There is no specific distinction between a chat with only two people and a group chat,
but there is a way to create a unique chat between a certain number of people by creating a <b>distinct</b> channel.

![](../assets/chat_basics.png)

In essence, a normal two-person chat would be a <b>distinct channel</b> created with two members (you cannot add or delete members in this channel), whereas a group created with two people would simply be a <b>non distinct channel</b> (possible to add or remove members).

:::note
It is also possible to add more than two people in a distinct channel which retains the same add/removal properties and resembles the Slack DMs where you can DM one or more people as well.
:::

In summary, if you were creating a Whatsapp-like app, the first screen would be a <b>list of channels</b> - which on opening would show a <b>list of messages</b> that were sent by the users in the Channel.

While this is a simplistic overview of the service, the Flutter SDK handles the UI and more time consuming things (media upload, offline storage, theming, etc.) for you.

Before reading the docs, consider trying our [online API tour](https://getstream.io/chat/get_started/),
it is a nice way to learn how the API works.
It's in-browser so you'll need to use JavaScript but the core concepts are pretty much the same as Dart.

You may also like to look at the [Flutter tutorial](https://getstream.io/chat/flutter/tutorial/)
which focuses on using the UI package to get Stream Chat integrated into a Flutter app.

Further sections break down each individual packages and explain several common operations.
Loading

0 comments on commit a20c633

Please sign in to comment.