You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.8 KiB
67 lines
1.8 KiB
import 'package:bytedesk_kefu/bytedesk_kefu.dart';
|
|
import 'package:bytedesk_kefu/model/thread.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
// 历史会话列表
|
|
class HistoryThreadPage extends StatefulWidget {
|
|
HistoryThreadPage({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
_HistoryThreadPageState createState() => _HistoryThreadPageState();
|
|
}
|
|
|
|
// TODO: 点击thread会话直接进入对话页面
|
|
class _HistoryThreadPageState extends State<HistoryThreadPage> {
|
|
//
|
|
int _page = 0;
|
|
int _size = 20;
|
|
List<Thread> _historyThreadList = [];
|
|
//
|
|
@override
|
|
void initState() {
|
|
_getVisitorThreads();
|
|
super.initState();
|
|
}
|
|
|
|
//
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text('历史会话'),
|
|
elevation: 0,
|
|
),
|
|
body: RefreshIndicator(
|
|
child: ListView.builder(
|
|
padding: EdgeInsets.all(8.0),
|
|
itemBuilder: (_, int index) => ListTile(
|
|
leading: Image.network(_historyThreadList[index].avatar!),
|
|
title: Text(
|
|
'${_historyThreadList[index].nickname}, ${_historyThreadList[index].timestamp}'),
|
|
subtitle: Text('${_historyThreadList[index].content}'),
|
|
onTap: () {
|
|
// 进入客服页面
|
|
BytedeskKefu.startChatThread(
|
|
context, _historyThreadList[index]);
|
|
},
|
|
),
|
|
itemCount: _historyThreadList.length,
|
|
),
|
|
onRefresh: _onRefresh,
|
|
));
|
|
}
|
|
|
|
void _getVisitorThreads() {
|
|
BytedeskKefu.getVisitorThreads(_page, _size).then((value) => {
|
|
setState(() {
|
|
_historyThreadList = value;
|
|
})
|
|
});
|
|
}
|
|
|
|
Future<void> _onRefresh() async {
|
|
_getVisitorThreads();
|
|
_page++;
|
|
}
|
|
}
|