Skip to main content

Poll Result Screen

Introduction

The Poll Result Screen (LMFeedPollResultScreen) displays the results of a poll, including the options, votes, and analysis. It provides customization points for the appearance and behavior of result visualization.


1. LMFeedPollResultScreen Widget

File Location:
poll_result_screen.dart

Class Declaration

class LMFeedPollResultScreen extends StatefulWidget {
/// A screen widget that displays poll results.
const LMFeedPollResultScreen({
super.key,
required this.pollId,
required this.pollOptions,
this.pollTitle,
this.selectedOptionId,
this.noItemsFoundIndicatorBuilder,
this.firstPageProgressIndicatorBuilder,
this.newPageProgressIndicatorBuilder,
this.noMoreItemsIndicatorBuilder,
this.newPageErrorIndicatorBuilder,
this.firstPageErrorIndicatorBuilder,
this.tabWidth,
});


State<LMFeedPollResultScreen> createState() => _LMFeedPollResultScreenState();
}

Key Parameters

  1. key (Key?, optional): A key to uniquely identify the widget.
  2. pollId (String, required): The ID of the poll to be displayed.
  3. pollTitle (String?, optional): The title of the poll.
  4. pollOptions (List<LMPollOptionViewData>, required): The options available in the poll.
  5. selectedOptionId (String?, optional): The ID of the selected option.

For the complete source code, refer to the GitHub link.


2. LMFeedPollResultBuilderDelegate

File Location:
builder.dart

Class Declaration

class LMFeedPollResultBuilderDelegate extends LMFeedWidgetBuilderDelegate {
const LMFeedPollResultBuilderDelegate();
}

The LMFeedPollResultBuilderDelegate allows developers to customize the appearance of poll results, including chart styles, vote counts, and other visual elements.

Methods in LMFeedPollResultBuilderDelegate

  1. pollResultChartBuilder
    Definition: Builds the chart widget to display poll results.
    Purpose: Customizes the visualization of poll results.

    Usage Example:


    Widget pollResultChartBuilder(BuildContext context, List<PollResult> results) {
    return CustomChart(results);
    }
  2. voteCountBuilder
    Definition: Builds the widget for displaying vote counts for each option.
    Purpose: Customizes the vote count display.

    Usage Example:


    Widget voteCountBuilder(BuildContext context, int votes) {
    return Text('$votes votes');
    }
  3. resultSummaryBuilder
    Definition: Builds the summary widget for poll results.
    Purpose: Provides a way to display an overview or key insights of the poll results.

    Usage Example:


    Widget resultSummaryBuilder(BuildContext context, PollSummary summary) {
    return Text('Total Votes: ${summary.totalVotes}');
    }

Remaining Methods

Explore the complete list of methods here.


3. LMFeedPollResultSetting

File Location:
settings.dart

class LMFeedPollResultSetting {
const LMFeedPollResultSetting();
}
  • Purpose: Provides configuration settings for the Poll Result Screen. No additional fields or methods are currently defined.

4. LMFeedPollResultStyle

File Location:
style.dart

class LMFeedPollResultStyle {
const LMFeedPollResultStyle();
}
  • Purpose: Defines styling options for the Poll Result Screen. No fields or methods are currently defined.

5. LMFeedPollResultConfig

File Location:
config.dart

Class Declaration

class LMFeedPollResultConfig {
final LMFeedPollResultBuilderDelegate builder;
final LMFeedPollResultSetting setting;
final LMFeedPollResultStyle style;

const LMFeedPollResultConfig({
this.builder = const LMFeedPollResultBuilderDelegate(),
this.setting = const LMFeedPollResultSetting(),
this.style = const LMFeedPollResultStyle(),
});
}

Usage Example: Injecting Custom Configuration

  1. Create a Custom Builder:

    class CustomPollResultBuilder extends LMFeedPollResultBuilderDelegate {

    Widget pollResultChartBuilder(BuildContext context, List<PollResult> results) {
    return CustomChart(results);
    }
    }
  2. Pass Custom Style or Setting along with Builder:

    final customStyle = LMFeedPollResultStyle();
    final customSetting = LMFeedPollResultSetting();
  3. Inject the Custom Builder, Style, or Setting into the Config:

    final pollResultConfig = LMFeedPollResultConfig(
    builder: CustomPollResultBuilder(),
    setting: customSetting,
    style: customStyle,
    );
  4. Initialize with Custom Config:

    LMFeedCore.instance.initialize(
    config: LMFeedConfig(
    pollResultConfig: pollResultConfig,
    ),
    );

6. Summary

The Poll Result Screen provides a user interface for displaying poll results. Developers can customize components like charts, vote counts, and summaries using the LMFeedPollResultBuilderDelegate. Configuration options are encapsulated in LMFeedPollResultConfig, allowing seamless integration of customizations tailored to specific design and functional requirements.