Browse Source

add some back UI

pull/18/head
Sun 4 years ago
parent
commit
2d69a45bbf
  1. 200
      lib/apps/chat/add.dart
  2. 14
      lib/apps/chat/list.dart
  3. 14
      lib/apps/file/list.dart
  4. 35
      lib/apps/group_chat/add.dart
  5. 14
      lib/apps/group_chat/list.dart
  6. 4
      lib/apps/group_chat/provider.dart
  7. 32
      lib/apps/service/list.dart
  8. 14
      lib/pages/home.dart
  9. 4
      src/apps/group_chat/layer.rs

200
lib/apps/chat/add.dart

@ -17,6 +17,7 @@ import 'package:esse/global.dart';
import 'package:esse/provider.dart'; import 'package:esse/provider.dart';
import 'package:esse/apps/chat/models.dart'; import 'package:esse/apps/chat/models.dart';
import 'package:esse/apps/chat/list.dart';
import 'package:esse/apps/chat/provider.dart'; import 'package:esse/apps/chat/provider.dart';
class ChatAddPage extends StatefulWidget { class ChatAddPage extends StatefulWidget {
@ -31,7 +32,6 @@ class ChatAddPage extends StatefulWidget {
} }
class _ChatAddPageState extends State<ChatAddPage> { class _ChatAddPageState extends State<ChatAddPage> {
final _formKey = GlobalKey<FormState>();
TextEditingController userIdEditingController = TextEditingController(); TextEditingController userIdEditingController = TextEditingController();
TextEditingController addrEditingController = TextEditingController(); TextEditingController addrEditingController = TextEditingController();
TextEditingController remarkEditingController = TextEditingController(); TextEditingController remarkEditingController = TextEditingController();
@ -115,113 +115,101 @@ class _ChatAddPageState extends State<ChatAddPage> {
final requestKeys = requests.keys.toList().reversed.toList(); // it had sorted. final requestKeys = requests.keys.toList().reversed.toList(); // it had sorted.
return Scaffold( return Scaffold(
body: SafeArea( appBar: AppBar(
child: Padding( title: Text(lang.addFriend),
padding: const EdgeInsets.all(10.0), bottom: PreferredSize(
child: Column(children: <Widget>[ child: Container(color: const Color(0x40ADB0BB), height: 1.0),
Row( preferredSize: Size.fromHeight(1.0)
children: [ ),
if (!isDesktop) leading: isDesktop
GestureDetector( ? IconButton(
onTap: () { onPressed: () {
context.read<ChatProvider>().requestClear(); context.read<ChatProvider>().requestClear();
Navigator.pop(context); context.read<AccountProvider>().updateActivedWidget(ChatList());
}, },
child: Container( icon: Icon(Icons.arrow_back, color: color.primary),
width: 20.0, ) : null,
child: Icon(Icons.arrow_back, color: color.primary)), actions: [
), TextButton(
SizedBox(width: 15.0), onPressed: () => showShadowDialog(
Expanded( context,
child: Text(lang.addFriend, Icons.info,
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20.0)), lang.info,
), UserInfo(app: 'add-friend',
TextButton( id: account.id, name: account.name, addr: Global.addr)
onPressed: () => showShadowDialog( ),
context, child: Text(lang.myQrcode, style: TextStyle(fontSize: 16.0)),
Icons.info, ),
lang.info, ]
UserInfo(app: 'add-friend', ),
id: account.id, name: account.name, addr: Global.addr) body: Container(
), padding: const EdgeInsets.all(10.0),
child: Text(lang.myQrcode, style: TextStyle(fontSize: 16.0)), alignment: Alignment.topCenter,
), child: SingleChildScrollView(
], child: Container(
), width: 600,
isDesktop ? SizedBox(height: 20.0) : SizedBox(height: 50.0), padding: const EdgeInsets.all(20),
Expanded( child: Column(
child: SingleChildScrollView( children: <Widget>[
child: Container( Container(
constraints: BoxConstraints(minWidth: 200, maxWidth: 600), child: Row(
padding: const EdgeInsets.all(20), mainAxisAlignment: MainAxisAlignment.spaceEvenly,
child: Form( children: [
key: _formKey, ShadowButton(
child: Column( icon: Icons.camera_alt,
crossAxisAlignment: CrossAxisAlignment.start, color: color,
children: <Widget>[ text: lang.scanQr,
Container( action: () => Navigator.push(
child: Row( context,
mainAxisAlignment: MainAxisAlignment.spaceEvenly, MaterialPageRoute(builder: (context) => QRScan(callback: scanCallback))
children: [ )),
ShadowButton( if (MediaQuery.of(context).size.width < 400) Spacer(),
icon: Icons.camera_alt, ShadowButton(
color: color, icon: Icons.image,
text: lang.scanQr, color: color,
action: () => Navigator.push( text: lang.scanImage,
context, action: chooseImage),
MaterialPageRoute(builder: (context) => QRScan(callback: scanCallback)) ],
)),
if (MediaQuery.of(context).size.width < 400) Spacer(),
ShadowButton(
icon: Icons.image,
color: color,
text: lang.scanImage,
action: chooseImage),
],
),
),
const SizedBox(height: 40.0),
InputText(
icon: Icons.person,
text: lang.id,
controller: userIdEditingController,
focus: userIdFocus),
const SizedBox(height: 20.0),
InputText(
icon: Icons.location_on,
text: lang.address,
controller: addrEditingController,
focus: addrFocus),
const SizedBox(height: 20.0),
InputText(
icon: Icons.turned_in,
text: lang.remark,
controller: remarkEditingController,
focus: remarkFocus),
const SizedBox(height: 20.0),
ButtonText(action: send, text: lang.send, width: 600.0),
const SizedBox(height: 20.0),
const Divider(height: 1.0, color: Color(0x40ADB0BB)),
const SizedBox(height: 10.0),
if (requests.isNotEmpty)
ListView.builder(
itemCount: requestKeys.length,
shrinkWrap: true,
physics: ClampingScrollPhysics(),
scrollDirection: Axis.vertical,
itemBuilder: (BuildContext context, int index) =>
_RequestItem(request: requests[requestKeys[index]]),
),
],
),
),
), ),
), ),
), const SizedBox(height: 40.0),
] InputText(
) icon: Icons.person,
) text: lang.id,
)); controller: userIdEditingController,
focus: userIdFocus),
const SizedBox(height: 20.0),
InputText(
icon: Icons.location_on,
text: lang.address,
controller: addrEditingController,
focus: addrFocus),
const SizedBox(height: 20.0),
InputText(
icon: Icons.turned_in,
text: lang.remark,
controller: remarkEditingController,
focus: remarkFocus),
const SizedBox(height: 20.0),
ButtonText(action: send, text: lang.send, width: 600.0),
const SizedBox(height: 20.0),
const Divider(height: 1.0, color: Color(0x40ADB0BB)),
const SizedBox(height: 10.0),
if (requests.isNotEmpty)
ListView.builder(
itemCount: requestKeys.length,
shrinkWrap: true,
physics: ClampingScrollPhysics(),
scrollDirection: Axis.vertical,
itemBuilder: (BuildContext context, int index) =>
_RequestItem(request: requests[requestKeys[index]]),
),
],
),
),
),
),
);
} }
} }

14
lib/apps/chat/list.dart

@ -36,14 +36,12 @@ class _ChatListState extends State<ChatList> {
preferredSize: Size.fromHeight(1.0) preferredSize: Size.fromHeight(1.0)
), ),
), ),
body: SafeArea( body: Padding(
child: Padding( padding: const EdgeInsets.symmetric(vertical: 10.0),
padding: const EdgeInsets.symmetric(vertical: 10.0), child: ListView.builder(
child: ListView.builder( itemCount: chatKeys.length,
itemCount: chatKeys.length, itemBuilder: (BuildContext ctx, int index) => ListChat(friend: friends[chatKeys[index]]),
itemBuilder: (BuildContext ctx, int index) => ListChat(friend: friends[chatKeys[index]]), )
)
),
), ),
floatingActionButton: FloatingActionButton( floatingActionButton: FloatingActionButton(
onPressed: () { onPressed: () {

14
lib/apps/file/list.dart

@ -83,14 +83,12 @@ class _FilesListState extends State<FilesList> {
preferredSize: Size.fromHeight(1.0) preferredSize: Size.fromHeight(1.0)
), ),
), ),
body: SafeArea( body: Padding(
child: Padding( padding: const EdgeInsets.symmetric(vertical: 10.0),
padding: const EdgeInsets.symmetric(vertical: 10.0), child: ListView.builder(
child: ListView.builder( itemCount: FILE_DIRECTORY.length,
itemCount: FILE_DIRECTORY.length, itemBuilder: (BuildContext ctx, int index) => item(index, color, isDesktop),
itemBuilder: (BuildContext ctx, int index) => item(index, color, isDesktop), )
)
),
), ),
); );
} }

35
lib/apps/group_chat/add.dart

@ -18,6 +18,7 @@ import 'package:esse/rpc.dart';
import 'package:esse/provider.dart'; import 'package:esse/provider.dart';
import 'package:esse/apps/group_chat/models.dart'; import 'package:esse/apps/group_chat/models.dart';
import 'package:esse/apps/group_chat/list.dart';
import 'package:esse/apps/group_chat/provider.dart'; import 'package:esse/apps/group_chat/provider.dart';
class GroupAddPage extends StatefulWidget { class GroupAddPage extends StatefulWidget {
@ -220,26 +221,28 @@ class _GroupAddPageState extends State<GroupAddPage> {
final requests = provider.requests; final requests = provider.requests;
final requestKeys = requests.keys.toList().reversed.toList(); final requestKeys = requests.keys.toList().reversed.toList();
return SafeArea( return DefaultTabController(
child: DefaultTabController(
initialIndex: 0, initialIndex: 0,
length: 2, length: 2,
child: Scaffold( child: Scaffold(
appBar: AppBar( appBar: AppBar(
title: Row( title: Text(lang.addFriend),
children: [ leading: isDesktop
Expanded( ? IconButton(
child: Text(lang.groupChatAdd, onPressed: () {
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20.0)), context.read<GroupChatProvider>().requestClear();
), context.read<AccountProvider>().updateActivedWidget(GroupChatList());
TextButton( },
onPressed: () => Navigator.push(context, icon: Icon(Icons.arrow_back, color: color.primary),
MaterialPageRoute(builder: (context) => QRScan(callback: _scanCallback)) ) : null,
), actions: [
child: Text(lang.scanQr, style: TextStyle(fontSize: 16.0)), TextButton(
onPressed: () => Navigator.push(context,
MaterialPageRoute(builder: (context) => QRScan(callback: _scanCallback))
), ),
], child: Text(lang.scanQr, style: TextStyle(fontSize: 16.0)),
), ),
],
bottom: TabBar( bottom: TabBar(
tabs: <Widget>[ tabs: <Widget>[
Tab( Tab(
@ -531,7 +534,7 @@ class _GroupAddPageState extends State<GroupAddPage> {
), ),
), ),
], ],
))) ))
); );
} }
} }

14
lib/apps/group_chat/list.dart

@ -35,14 +35,12 @@ class _GroupChatListState extends State<GroupChatList> {
preferredSize: Size.fromHeight(1.0) preferredSize: Size.fromHeight(1.0)
), ),
), ),
body: SafeArea( body: Padding(
child: Padding( padding: const EdgeInsets.symmetric(vertical: 10.0),
padding: const EdgeInsets.symmetric(vertical: 10.0), child: ListView.builder(
child: ListView.builder( itemCount: orderKeys.length,
itemCount: orderKeys.length, itemBuilder: (BuildContext ctx, int index) => ListChat(group: groups[orderKeys[index]]),
itemBuilder: (BuildContext ctx, int index) => ListChat(group: groups[orderKeys[index]]), )
)
),
), ),
floatingActionButton: FloatingActionButton( floatingActionButton: FloatingActionButton(
onPressed: () { onPressed: () {

4
lib/apps/group_chat/provider.dart

@ -118,6 +118,10 @@ class GroupChatProvider extends ChangeNotifier {
this.activedMembers.clear(); this.activedMembers.clear();
} }
requestClear() {
this.requests.clear();
}
join(GroupType gtype, String gid, String gaddr, String name, String remark, [String proof = '', String key = '']) { join(GroupType gtype, String gid, String gaddr, String name, String remark, [String proof = '', String key = '']) {
rpc.send('group-chat-join', [gtype.toInt(), gid, gaddr, name, remark, proof, key]); rpc.send('group-chat-join', [gtype.toInt(), gid, gaddr, name, remark, proof, key]);
} }

32
lib/apps/service/list.dart

@ -35,23 +35,21 @@ class _ServiceListState extends State<ServiceList> {
preferredSize: Size.fromHeight(1.0) preferredSize: Size.fromHeight(1.0)
), ),
), ),
body: SafeArea( body: Padding(
child: Padding( padding: const EdgeInsets.symmetric(vertical: 10.0),
padding: const EdgeInsets.symmetric(vertical: 10.0), child: ListView.builder(
child: ListView.builder( itemCount: INNER_SERVICES.length,
itemCount: INNER_SERVICES.length, itemBuilder: (BuildContext ctx, int index) {
itemBuilder: (BuildContext ctx, int index) { final params = INNER_SERVICES[index].params(lang);
final params = INNER_SERVICES[index].params(lang); return ListInnerService(
return ListInnerService( name: params[0],
name: params[0], bio: params[1],
bio: params[1], logo: params[2],
logo: params[2], callback: () => INNER_SERVICES[index].callback(),
callback: () => INNER_SERVICES[index].callback(), isDesktop: isDesktop,
isDesktop: isDesktop, );
); }
} )
)
),
), ),
floatingActionButton: FloatingActionButton( floatingActionButton: FloatingActionButton(
onPressed: () { onPressed: () {

14
lib/pages/home.dart

@ -212,14 +212,12 @@ class _HomeListState extends State<HomeList> {
) )
] ]
), ),
body: SafeArea( body: Padding(
child: Padding( padding: const EdgeInsets.symmetric(vertical: 10.0),
padding: const EdgeInsets.symmetric(vertical: 10.0), child: ListView.builder(
child: ListView.builder( itemCount: allKeys.length,
itemCount: allKeys.length, itemBuilder: (BuildContext ctx, int index) => _SessionWidget(
itemBuilder: (BuildContext ctx, int index) => _SessionWidget( session: sessions[allKeys[index]]
session: sessions[allKeys[index]]
),
), ),
), ),
), ),

4
src/apps/group_chat/layer.rs

@ -213,7 +213,7 @@ async fn handle_event(
results.rpcs.push(rpc::member_offline(mgid, gid, mid)); results.rpcs.push(rpc::member_offline(mgid, gid, mid));
} }
LayerEvent::Sync(gcd, height, event) => { LayerEvent::Sync(gcd, height, event) => {
let (sid, gid) = layer.read().await.get_running_remote_id(&mgid, &gcd)?; let (_sid, gid) = layer.read().await.get_running_remote_id(&mgid, &gcd)?;
println!("Sync: height: {}", height); println!("Sync: height: {}", height);
let base = layer.read().await.base().clone(); let base = layer.read().await.base().clone();
@ -312,7 +312,7 @@ async fn handle_event(
let (_sid, _gid) = layer.read().await.get_running_remote_id(&mgid, &gcd)?; let (_sid, _gid) = layer.read().await.get_running_remote_id(&mgid, &gcd)?;
let db = group_chat_db(layer.read().await.base(), &mgid)?; let db = group_chat_db(layer.read().await.base(), &mgid)?;
let id = Request::over_rid(&db, &gcd, &rid, ok)?; let id = Request::over_rid(&db, &gcd, &rid, ok)?;
results.rpcs.push(rpc::request_handle(mgid, id, ok)); results.rpcs.push(rpc::request_handle(mgid, id, ok, false));
} }
LayerEvent::Request(..) => {} // nerver here. LayerEvent::Request(..) => {} // nerver here.
LayerEvent::Check => {} // nerver here. LayerEvent::Check => {} // nerver here.

Loading…
Cancel
Save