---
id: introduction
sidebar_position: 1
title: Introduction
---

Understanding The Core Package Of The Flutter SDK

This package 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.
Please use the `stream_chat_flutter` package for the full fledged suite of UI components or `stream_chat` for the low-level client.

### Background

In the early days of the Flutter SDK, the SDK was only split into the LLC (`stream_chat`) and
the UI package (`stream_chat_flutter`). With this you could use a fully built interface with the UI package
or a fully custom interface with the LLC. However, we soon recognised the need for a third intermediary
package which made tasks like building and modifying a list of channels or messages easy but without
the complexity of using low level components. The Core package (`stream_chat_flutter_core`) is a manifestation
of the same idea and allows you to build an interface with Stream Chat without having to deal with
low level code and architecture as well as implementing your own theme and UI effortlessly. 
Also, it has very few dependencies.

We will now explore the components of this intermediary package and understand how it helps you build
the experience you want your users to have.

The package primarily contains a bunch of controller classes.
Controllers are used to handle the business logic of the chat. You can use them together with our UI widgets, or you can even use them to build your own UI.

* StreamChannelListController
* StreamUserListController
* StreamMessageSearchListController
* StreamMessageInputController
* LazyLoadScrollView
* PagedValueListenableBuilder

This section goes into the individual core package widgets and their functional use.
