Skip to main content

Report Screen

Introduction

The Report Screen (LMFeedReportScreen) provides an interface for users to report inappropriate content, such as posts, comments, or replies.


1. LMFeedReportScreen Widget

File Location:
report_screen.dart

Class Declaration

class LMFeedReportScreen extends StatefulWidget {
/// The ID of the entity (post, comment, or reply) being reported.
final String entityId;

/// The ID of the user who created the entity being reported.
final String entityCreatorId;

/// The type of the entity being reported (e.g., post, comment, reply).
final int entityType;

/// Builder for report chips.
final Widget Function(BuildContext, LMDeleteReasonViewData)? reportChipBuilder;

/// Builder for report content.
final Widget Function(BuildContext, LMReportContentWidget)? reportContentBuilder;

/// A screen widget for reporting inappropriate content.
const LMFeedReportScreen({
Key? key,
required this.entityId,
required this.entityCreatorId,
required this.entityType,
this.reportChipBuilder,
this.reportContentBuilder,
}) : super(key: key);


State<LMFeedReportScreen> createState() => _LMFeedReportScreenState();
}

Key Parameters

  1. entityId (String, required): The ID of the entity (post, comment, or reply) being reported.
  2. entityCreatorId (String, required): The ID of the user who created the entity being reported.
  3. entityType (int, required): The type of entity being reported (e.g., post, comment).
  4. reportChipBuilder (Widget Function(BuildContext, LMDeleteReasonViewData)?): Builder for report chips.
  5. reportContentBuilder (Widget Function(BuildContext, LMReportContentWidget)?): Builder for report content.

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


2. LMFeedReportBuilderDelegate

File Location:
builder.dart

Class Declaration

class LMFeedReportBuilderDelegate extends LMFeedWidgetBuilderDelegate {
const LMFeedReportBuilderDelegate();
}

The LMFeedReportBuilderDelegate allows developers to customize the report chips and report content specifically for the report screen.

Methods in LMFeedReportBuilderDelegate

  1. reportChipBuilder
    Definition: Builds the widget for report chips in the report screen.
    Purpose: Customizes the style and layout of report chips.

    Usage Example:


    Widget reportChipBuilder(BuildContext context, LMDeleteReasonViewData data) {
    // Return a custom widget for displaying report chips
    return Chip(
    label: Text(data.reason),
    );
    }
  2. reportContentBuilder
    Definition: Builds the widget for report content in the report screen.
    Purpose: Customizes the appearance and behavior of report content.

    Usage Example:


    Widget reportContentBuilder(BuildContext context, LMReportContentWidget content) {
    // Return a custom widget for displaying report content
    return ListTile(
    title: Text(content.title),
    subtitle: Text(content.description),
    );
    }
  3. loaderWidget
    Definition: Builds the loader widget for the report screen.
    Purpose: Provides a way to customize the loader.

    Usage Example:


    Widget loaderWidget(BuildContext context) {
    // Return a custom loader widget
    return CustomLoader();
    }

Remaining Methods

Explore the complete list of methods here.


3. LMFeedReportSetting

File Location:
settings.dart

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

4. LMFeedReportStyle

File Location:
style.dart

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

5. LMFeedReportConfig

File Location:
config.dart

Class Declaration

class LMFeedReportConfig {
final LMFeedReportBuilderDelegate builder;
final LMFeedReportSetting setting;
final LMFeedReportStyle style;

const LMFeedReportConfig({
this.builder = const LMFeedReportBuilderDelegate(),
this.setting = const LMFeedReportSetting(),
this.style = const LMFeedReportStyle(),
});
}

Usage Example: Injecting Custom Configuration

  1. Create a Custom Builder:

    class CustomReportBuilder extends LMFeedReportBuilderDelegate {

    Widget reportChipBuilder(BuildContext context, LMDeleteReasonViewData data) {
    return Chip(
    label: Text(data.reason),
    );
    }
    }
  2. Pass Custom Style or Setting along with Builder:

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

    final reportConfig = LMFeedReportConfig(
    builder: CustomReportBuilder(),
    setting: customSetting,
    style: customStyle,
    );
  4. Initialize with Custom Config:

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

6. Summary

The Report Screen provides a user interface for reporting inappropriate content. Developers can customize components like report chips and report content using the LMFeedReportBuilderDelegate. Configuration options are encapsulated in LMFeedReportConfig, enabling seamless integration and customization tailored to specific design and functional requirements.