hasMoreMsgs is used to tell widget there are more messages need load in scroll to end
offsetToTriggerLoadMore is used to tell widget when scroll offset is reach to end by loadNextMessageOffset,
onLoadMoreMsgs function will invoke, null or 0 will not enable automatically invoke load function
Loadmore in end and loadmore in header
hasPrevMsgs is used to tell widget there are more messages need load when scroll to first item
offsetToTriggerLoadPrev is used to tell widget when scroll offset is reach to first item by loadPrevMessageOffset,
onLoadPrevMsgs function will invoke, null or 0 will not enable automatically invoke load function
latestReadMsgKey is the messages last readed
null will be all message is readed
If the latestReadMessage is in messages, It mean it should be in current view
else it will be not in list.
Does the widget show last message tip. Click it will jump to last message
But if the last messages is not in current source.
unreadMsgButtonBuilder is used to build the button should "Scroll to latest read message"
unreadMsgTipBuilder is used to build the tip like "-------------latest read-------------"
onLoadMsgsByLatestReadMsgKey if latestReadMessageKey in messages. just jump to to message.
If it is not in messages, onLoadMsgsByLatestReadMsgKey will invoke to load. After load, it will also jump to the latest message
When user click scroll to latest unread message. The widget will scroll to the unread item to top by offsetFromUnreadTipToTop offset
The scroll is not in top while user read messages, in this time, new message coming, Does it need should new message coming button
onIsReceiveMessage Does it is received message, not send or tip message