Skip to main content

Poll Result Screen

Introduction

The Poll Result Screen enables users to create and interact with polls. It supports creating polls via a bottom sheet and displaying poll results. Developers can further customize the behavior and UI using builder delegates.


1. LMChatPollResultScreen Widget

File Location:
poll_result.dart

Class Declaration

class LMChatPollResultScreen extends StatefulWidget {

State<LMChatPollResultScreen> createState() =>
_LMChatPollResultScreenState();
}

The LMChatPollResultScreen widget displays the results of a poll, showing the poll options and the corresponding vote counts and users.


2. LMChatOptionTile Widget

File Location:
create_poll.dart

Class Declaration

class LMChatOptionTile extends StatefulWidget {

State<LMChatOptionTile> createState() => _LMChatOptionTileState();
}

The LMChatOptionTile widget represents individual poll options. It is used within the poll creation flow.


3. LMChatPollResultBuilderDelegate

File Location:
builder.dart

Class Declaration

class LMChatPollResultBuilderDelegate {
const LMChatPollResultBuilderDelegate();
}

The LMChatPollResultBuilderDelegate provides several methods to customize the UI and behavior of polls.

Methods in LMChatPollResultBuilderDelegate

  1. scaffold
    Definition: Builds the scaffold for the poll view.
    Purpose: Customizes the primary structure of the poll interface.

    Usage Example:


    Widget scaffold({PreferredSizeWidget? appBar, Widget? body}) {
    return Scaffold(appBar: appBar, body: body);
    }
  2. voteCountTextBuilder
    Definition: Builds the vote count text for each poll option.
    Purpose: Customizes the display of the vote counts.

    Usage Example:


    Widget voteCountTextBuilder(BuildContext context, int voteCount) {
    return Text('$voteCount votes');
    }
  3. pollOptionTextBuilder
    Definition: Builds the text for poll options.
    Purpose: Customizes how poll options are displayed.

    Usage Example:


    Widget pollOptionTextBuilder(BuildContext context, String option) {
    return Text(option);
    }

Remaining Methods

Explore the full list of methods here.


4. LMChatPollSetting

File Location:
setting.dart

class LMChatPollSetting {
const LMChatPollSetting();
}
  • Purpose: Provides settings for managing poll behavior, such as multi-select options.

5. LMChatPollStyle

File Location:
style.dart

class LMChatPollStyle {
const LMChatPollStyle();
}
  • Purpose: Defines the visual appearance of polls, such as colors and font styles.

6. LMChatPollConfig

File Location:
config.dart

Class Declaration

class LMChatPollConfig {
final LMChatPollResultBuilderDelegate pollResultBuilder;
final LMChatCreatePollBuilderDelegate createPollBuilder;
final LMChatPollSetting setting;
final LMChatPollStyle style;

const LMChatPollConfig({
this.pollResultBuilder = const LMChatPollResultBuilderDelegate(),
this.createPollBuilder = const LMChatCreatePollBuilderDelegate(),
this.setting = const LMChatPollSetting(),
this.style = const LMChatPollStyle(),
});
}

Usage Example: Injecting Custom Configuration

  1. Create a Custom Builder:

    class CustomPollResultBuilder extends LMChatPollResultBuilderDelegate {

    Widget voteCountTextBuilder(BuildContext context, int voteCount) {
    return Text('$voteCount votes', style: TextStyle(color: Colors.green));
    }
    }
  2. Pass Custom Style and Setting along with Builder:

    final customStyle = LMChatPollStyle();
    final customSetting = LMChatPollSetting();
  3. Inject the Custom Builder, Style, and Setting into the Config:

    final pollConfig = LMChatPollConfig(
    pollResultBuilder: CustomPollResultBuilder(),
    createPollBuilder: CustomCreatePollBuilder(),
    style: customStyle,
    setting: customSetting,
    );
  4. Initialize with Custom Config:

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

7. Summary

The Poll Result Screen enables users to create polls, vote, and view poll results. Developers can customize the interface using LMChatPollResultBuilderDelegate, and further control the behavior and appearance through LMChatPollConfig. This flexibility ensures the poll experience meets specific design and functional requirements.