Skip to main content

Explore Screen

Introduction​

The Explore Screen (LMChatExplorePage) allows users to browse and interact with chatrooms. It provides sorting by activity, participants, or messages. The Explore Screen is fully customizable through builder delegates.


1. LMChatExplorePage Widget​

File Location:
explore.dart

Class Declaration​

class LMChatExplorePage extends StatefulWidget {
const LMChatExplorePage({super.key});


State<LMChatExplorePage> createState() => _LMChatExplorePageState();
}

This widget renders the Explore Screen and allows users to browse different chatrooms.


2. LMChatExploreBuilderDelegate​

File Location:
builder.dart

Class Declaration​

class LMChatExploreBuilderDelegate {
const LMChatExploreBuilderDelegate();
}

The LMChatExploreBuilderDelegate provides 14 methods to customize the Explore Screen. Below are three key methods.

Methods in LMChatExploreBuilderDelegate (3 out of 14 shown)​

  1. scaffold
    Definition: Builds the main scaffold for the Explore Screen.
    Purpose: Customizes the screen’s structure, including the app bar and body.

    Usage Example:


    Widget scaffold({
    PreferredSizeWidget? appBar,
    Widget? body,
    }) {
    return Scaffold(appBar: appBar, body: body);
    }
  2. exploreTileBuilder
    Definition: Builds individual tiles for the chatrooms in the Explore Screen.
    Purpose: Customizes the layout and style of each chatroom tile.

    Usage Example:


    Widget exploreTileBuilder(
    BuildContext context, LMChatRoomViewData chatRoomViewData) {
    return ListTile(
    title: Text(chatRoomViewData.name),
    );
    }
  3. pinButtonBuilder
    Definition: Builds the pin button for chatrooms.
    Purpose: Customizes the style and behavior of the pin button.

    Usage Example:


    Widget pinButtonBuilder(BuildContext context, Widget pinButton) {
    return IconButton(onPressed: () {}, icon: Icon(Icons.push_pin));
    }

Remaining Methods (11 more)​

Explore the complete list of methods here.


3. LMChatExploreSetting​

File Location:
setting.dart

class LMChatExploreSetting {
const LMChatExploreSetting();
}
  • Purpose: Provides settings for the Explore Screen. No fields or methods are currently defined.

4. LMChatExploreStyle​

File Location:
style.dart

class LMChatExploreStyle {
const LMChatExploreStyle({
this.popUpMenuStyle,
});

final LMChatCustomPopupMenuStyle Function(
LMChatCustomPopupMenuStyle oldStyle)? popUpMenuStyle;
}
  • Fields:
    • popUpMenuStyle: A function that customizes the style of popup menus, including text, icons, and background.

5. LMChatExploreConfig​

File Location:
config.dart

Class Declaration​

class LMChatExploreConfig {
final LMChatExploreBuilderDelegate builder;
final LMChatExploreSetting setting;
final LMChatExploreStyle style;

const LMChatExploreConfig({
this.builder = const LMChatExploreBuilderDelegate(),
this.setting = const LMChatExploreSetting(),
this.style = const LMChatExploreStyle(),
});
}

Usage Example: Injecting Custom Configuration​

  1. Create a Custom Builder:

    class CustomExploreBuilder extends LMChatExploreBuilderDelegate {

    Widget pinButtonBuilder(BuildContext context, Widget pinButton) {
    return IconButton(
    onPressed: () {},
    icon: Icon(Icons.push_pin, color: Colors.red),
    );
    }
    }
  2. Pass Custom Style or Setting along with Builder:

    final customStyle = LMChatExploreStyle(
    popUpMenuStyle: (oldStyle) => oldStyle.copyWith(
    textStyle: const TextStyle(fontSize: 18),
    ),
    );
  3. Inject the Custom Builder, Style, or Setting into the Config:

    final exploreConfig = LMChatExploreConfig(
    builder: CustomExploreBuilder(),
    style: customStyle,
    );
  4. Initialize with Custom Config:

    LMChatCore.instance.initialize(
    config: LMChatConfig(
    exploreConfig: exploreConfig,
    ),
    );

6. Summary​

The Explore Screen enables users to discover new chatrooms through customizable layouts. Developers can modify components using the LMChatExploreBuilderDelegate and inject configurations through LMChatExploreConfig. This flexibility ensures the Explore Screen can fit various design requirements.