LMFeedDocument
LMFeedDocument
is a widget that displays a document preview within a feed post. It shows the document's title, file type, and size. The widget provides customization options for styling the document preview and handling tap events.
The LMFeedDocument
widget is part of the likeminds_feed_flutter_ui
package. It is designed to be used within an LMFeedPostWidget
to display document previews associated with a post.
Properties
onTap
(Function()
)
A callback function that is invoked when the document preview is tapped. This is an optional parameter.
documentFile
(File
)
The file object representing the document. Either documentFile
or documentUrl
must be provided.
documentUrl
(String
)
The URL of the document. Either documentFile
or documentUrl
must be provided.
type
(String
)
The file type of the document. This is an optional parameter with a default value of 'pdf'
.
size
(String
)
The size of the document. This is an optional parameter.
title
(LMFeedText
)
A custom title text widget for the document preview. This is an optional parameter.
subtitle
(LMFeedText
)
A custom subtitle text widget for the document preview. This is an optional parameter.
onRemove
(Function
)
A callback function that is invoked when the remove button is tapped. This is an optional parameter.
style
(LMFeedPostDocumentStyle
)
The style configuration for the document preview. It allows customization of the document preview's appearance and behavior. This is an optional parameter.
Styling
The LMFeedPostDocumentStyle
class allows you to customize the appearance and behavior of the LMFeedDocument
widget.
Customization variables
Property | Type | Description | Required | Default |
---|---|---|---|---|
height | double | The height of the document preview container. | 72 | |
width | double | The width of the document preview container. | Screen width - 40 | |
borderRadius | double | The border radius of the document preview container. | 8 | |
borderSize | double | The border size of the document preview container. | 1 | |
borderColor | Color | The border color of the document preview container. | Colors.grey | |
textColor | Color | The color of the text in the document preview. | Colors.grey.shade700 | |
documentIcon | Widget | The icon widget representing the document type. | PDF icon | |
removeIcon | LMFeedIcon | The icon widget for the remove button. | Close icon | |
showBorder | bool | Whether to show the border around the document preview container. | true | |
backgroundColor | Color | The background color of the document preview container. | ||
titleStyle | LMFeedTextStyle | The text style for the document title. | ||
subtitleStyle | LMFeedTextStyle | The text style for the document subtitle. | ||
padding | EdgeInsets | The padding of the document preview container. | 16 | |
margin | EdgeInsets | The margin of the document preview container. | Vertical padding of 8 |
You can create an instance of LMFeedPostDocumentStyle
and pass it to the LMFeedDocument
widget to customize its appearance and behavior.
Usage Example
LMFeedDocument(
documentUrl: 'https://example.com/document.pdf',
type: 'pdf',
size: '2.5 MB',
onTap: () {
// Handle document tap
},
title: LMFeedText(
text: 'Example Document',
style: LMFeedTextStyle(
textStyle: TextStyle(
color: Colors.black,
fontSize: 16,
fontWeight: FontWeight.bold,
),
),
),
subtitle: LMFeedText(
text: 'PDF · 2.5 MB',
style: LMFeedTextStyle(
textStyle: TextStyle(
color: Colors.grey,
fontSize: 14,
),
),
),
onRemove: () {
// Handle remove button tap
},
style: LMFeedPostDocumentStyle(
height: 80,
width: 300,
borderRadius: 12,
borderSize: 2,
borderColor: Colors.blue,
textColor: Colors.black,
documentIcon: Icon(Icons.picture_as_pdf, color: Colors.red),
removeIcon: LMFeedIcon(
type: LMFeedIconType.icon,
icon: Icons.delete,
style: LMFeedIconStyle(color: Colors.red),
),
backgroundColor: Colors.white,
titleStyle: LMFeedTextStyle(
textStyle: TextStyle(
color: Colors.black,
fontSize: 16,
fontWeight: FontWeight.bold,
),
),
subtitleStyle: LMFeedTextStyle(
textStyle: TextStyle(
color: Colors.grey,
fontSize: 14,
),
),
padding: EdgeInsets.all(12),
margin: EdgeInsets.symmetric(vertical: 8),
),
)
In this example, an LMFeedDocument
widget is created with the documentUrl
property set to the URL of the document. The type
and size
properties specify the file type and size of the document. The onTap
callback is provided to handle taps on the document preview. Custom title
and subtitle
widgets are used to display the document's title and subtitle. The onRemove
callback is invoked when the remove button is tapped. The appearance of the document preview is customized using the LMFeedPostDocumentStyle
class, specifying various properties such as height, width, border radius, border size, border color, text color, document icon, remove icon, background color, title style, subtitle style, padding, and margin.