| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- import 'package:e2ee_chat/azlistview/azlistview.dart';
- import 'package:e2ee_chat/common/api.dart';
- import 'package:e2ee_chat/common/global.dart';
- import 'package:e2ee_chat/l10n/localization_intl.dart';
- import 'package:e2ee_chat/model/contact_info.dart';
- import 'package:e2ee_chat/model/message.dart';
- import 'package:e2ee_chat/model/user.dart';
- import 'package:e2ee_chat/presenter/contact_list.dart';
- import 'package:e2ee_chat/presenter/chat_list.dart';
- import 'package:e2ee_chat/presenter/friend_request.dart';
- import 'package:e2ee_chat/presenter/login.dart';
- import 'package:e2ee_chat/presenter/user_chat.dart';
- import 'package:e2ee_chat/view/user_chat.dart';
- import 'package:e2ee_chat/widgets/utils.dart';
- import 'package:flutter/material.dart';
- import 'package:provider/provider.dart';
- class FriendRequestListView extends StatefulWidget {
- @override
- _FriendRequestListViewState createState() => _FriendRequestListViewState();
- }
- class _FriendRequestListViewState extends State<FriendRequestListView> {
- final presenter = FriendRequestPresenter();
- String _choice = 'Nothing';
- @override
- void initState() {
- super.initState();
- presenter.flushFriendRequest().then((_) => setState(() {}));
- }
- @override
- Widget build(BuildContext context) {
- return ChangeNotifierProvider<FriendRequestPresenter>(
- create: (context) => presenter,
- child: Scaffold(
- appBar: AppBar(
- title: Text(GmLocalizations.of(context).friendRequest),
- ),
- body: Builder(
- builder: (context) {
- final provider = Provider.of<FriendRequestPresenter>(context);
- final requests = provider.requests;
- return RefreshIndicator(
- child: AzListView(
- data: requests,
- itemCount: requests.length,
- itemBuilder: (context, index) {
- ContactInfo info = requests[index];
- return Utils.getWeChatListItem(context, info, defHeaderBgColor: Color(0xFFE5E5E5), onTap: () async {
- //TODO: 弹窗 接受 拒绝
- await showDialog(
- context: context,
- barrierDismissible: false,//// user must tap button!
- builder: (BuildContext context) {
- return AlertDialog(
- title: Text('Confirm'),
- content: Text('Accept?'),
- actions: <Widget>[
- TextButton(
- child: Text('No'),
- onPressed: () {
- Navigator.pop(context);
- },
- ),
- TextButton(
- child: Text('Yes'),
- onPressed: () {
- provider.acceptFriend(info.name);
- Navigator.pop(context);
- },
- ),
- ],
- );
- },
- );
- });
- },
- physics: BouncingScrollPhysics(),
- susItemBuilder: (BuildContext context, int index) {
- ContactInfo model = requests[index];
- debug('sus item build contact info: name ${model.name} tag ${model.getSuspensionTag()}');
- if ('↑' == model.getSuspensionTag()) {
- return Container();
- }
- return Utils.getSusItem(context, model.getSuspensionTag());
- },
- indexBarData: ['↑', '☆', ...kIndexBarData],
- indexBarOptions: IndexBarOptions(
- needRebuild: true,
- ignoreDragCancel: true,
- downTextStyle: TextStyle(fontSize: 12, color: Colors.white),
- downItemDecoration: BoxDecoration(shape: BoxShape.circle, color: Colors.green),
- indexHintWidth: 120 / 2,
- indexHintHeight: 100 / 2,
- indexHintDecoration: BoxDecoration(
- image: DecorationImage(
- image: AssetImage(Utils.getImgPath('ic_index_bar_bubble_gray')),
- fit: BoxFit.contain,
- ),
- ),
- indexHintAlignment: Alignment.centerRight,
- indexHintChildAlignment: Alignment(-0.25, 0.0),
- indexHintOffset: Offset(-20, 0),
- ),
- ),
- onRefresh: () async {});
- },
- ),
- ));
- }
- }
|