feat: Added additional guide
This commit is contained in:
@@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
id: choose_package
|
||||||
|
sidebar_position: 2
|
||||||
|
title: 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.
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::summary
|
||||||
|
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.
|
||||||
|
|
||||||
|
:::summary
|
||||||
|
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.
|
||||||
|
|
||||||
|
:::summary
|
||||||
|
For the most control over the SDK and dealing with low level calls to the API, use stream_chat.
|
||||||
|
:::
|
||||||
@@ -27,11 +27,7 @@ class UsersListPage extends StatelessWidget {
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: UsersBloc(
|
body: UsersBloc(
|
||||||
child: UsersListView(
|
child: UsersListView(
|
||||||
filter: Filter.and([
|
filter: Filter.notEqual('id', StreamChat.of(context).user!.id),
|
||||||
Filter.autoComplete('name', 'search_here'),
|
|
||||||
Filter.notEqual(
|
|
||||||
'id', StreamChat.of(context).user!.id),
|
|
||||||
]),
|
|
||||||
sort: [
|
sort: [
|
||||||
SortOption(
|
SortOption(
|
||||||
'name',
|
'name',
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ exposes builders to build the UI in situations such as loading, empty data, erro
|
|||||||
|
|
||||||
### Basic Example
|
### Basic Example
|
||||||
|
|
||||||
[UserListCore] is a simplified class that allows fetching users while
|
`UserListCore` is a simplified class that allows fetching users while
|
||||||
exposing UI builders.
|
exposing UI builders.
|
||||||
A [UserListController] is used to load and paginate data.
|
A `UserListController` is used to load and paginate data.
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
class UsersListPage extends StatelessWidget {
|
class UsersListPage extends StatelessWidget {
|
||||||
@@ -28,7 +28,6 @@ class UsersListPage extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: UsersListCore(
|
body: UsersListCore(
|
||||||
filter: Filter.autoComplete('name', 'search_here'),
|
|
||||||
sort: [SortOption('last_active')],
|
sort: [SortOption('last_active')],
|
||||||
pagination: PaginationParams(
|
pagination: PaginationParams(
|
||||||
limit: 20,
|
limit: 20,
|
||||||
@@ -57,9 +56,9 @@ class UsersListPage extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
[UsersBloc] must be the ancestor of this widget. This is necessary since
|
`UsersBloc` must be the ancestor of this widget. This is necessary since
|
||||||
[UserListCore] depends on functionality contained within [UsersBloc].
|
`UserListCore` depends on functionality contained within `UsersBloc`.
|
||||||
|
|
||||||
The parameters [listBuilder], [loadingBuilder], [emptyBuilder] and
|
The parameters `listBuilder`, `loadingBuilder`, `emptyBuilder` and
|
||||||
[errorBuilder] must all be supplied and not null.
|
`errorBuilder` must all be supplied and not null.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user