Browse Source

update list UI

pull/18/head
Sun 4 years ago
parent
commit
09e5531ab2
  1. 45
      lib/apps/file/list.dart
  2. 2
      lib/apps/group_chat/detail.dart
  3. 19
      lib/apps/group_chat/list.dart
  4. 37
      lib/apps/service/add.dart
  5. 49
      lib/apps/service/list.dart
  6. 6
      lib/apps/service/models.dart
  7. 4
      lib/l10n/localizations.dart
  8. 4
      lib/l10n/localizations_en.dart
  9. 4
      lib/l10n/localizations_zh.dart
  10. 6
      lib/pages/home.dart

45
lib/apps/file/page.dart → lib/apps/file/list.dart

@ -6,9 +6,9 @@ import 'package:esse/utils/file_image.dart';
import 'package:esse/l10n/localizations.dart'; import 'package:esse/l10n/localizations.dart';
import 'package:esse/provider.dart'; import 'package:esse/provider.dart';
class FolderList extends StatefulWidget { class FilesList extends StatefulWidget {
@override @override
_FolderListState createState() => _FolderListState(); _FilesListState createState() => _FilesListState();
} }
const List FILE_DIRECTORY = [ const List FILE_DIRECTORY = [
@ -22,33 +22,23 @@ const List FILE_DIRECTORY = [
["Trash", Icons.auto_delete_rounded], ["Trash", Icons.auto_delete_rounded],
]; ];
class _FolderListState extends State<FolderList> { class _FilesListState extends State<FilesList> {
int chooseIndex = 0; int chooseIndex = 0;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
Future.delayed(Duration.zero, () { loadRecents();
final isDesktop = isDisplayDesktop(context);
if (isDesktop) {
loadFolder(true, chooseIndex);
}
});
} }
loadFolder(bool isDesktop, int index) async { loadRecents() {
final widget = FilePage(title: FILE_DIRECTORY[index][0]); //
if (isDesktop) {
Provider.of<AccountProvider>(context, listen: false).updateActivedWidget(widget);
} else {
Navigator.push(context, MaterialPageRoute(builder: (_) => widget));
}
} }
changeItem(int index, bool isDesktop) { changeItem(int index, bool isDesktop) {
setState(() { setState(() {
chooseIndex = index; chooseIndex = index;
loadFolder(isDesktop, index); // loadFolder(isDesktop, index);
}); });
} }
@ -82,11 +72,26 @@ class _FolderListState extends State<FolderList> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final color = Theme.of(context).colorScheme; final color = Theme.of(context).colorScheme;
final lang = AppLocalizations.of(context);
final isDesktop = isDisplayDesktop(context); final isDesktop = isDisplayDesktop(context);
return ListView.builder( return Scaffold(
itemCount: FILE_DIRECTORY.length, appBar: AppBar(
itemBuilder: (BuildContext ctx, int index) => item(index, color, isDesktop), title: Text(lang.files + ' (${lang.wip})'),
bottom: PreferredSize(
child: Container(color: const Color(0x40ADB0BB), height: 1.0),
preferredSize: Size.fromHeight(1.0)
),
),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 10.0),
child: ListView.builder(
itemCount: FILE_DIRECTORY.length,
itemBuilder: (BuildContext ctx, int index) => item(index, color, isDesktop),
)
),
),
); );
} }
} }

2
lib/apps/group_chat/detail.dart

@ -318,7 +318,7 @@ class _GroupChatDetailState extends State<GroupChatDetail> {
return <PopupMenuEntry<int>>[ return <PopupMenuEntry<int>>[
_menuItem(Color(0xFF6174FF), 1, Icons.qr_code_rounded, lang.info), _menuItem(Color(0xFF6174FF), 1, Icons.qr_code_rounded, lang.info),
this.group.isClosed this.group.isClosed
? _menuItem(Color(0xFF6174FF), 4, Icons.send_rounded, lang.addGroup) ? _menuItem(Color(0xFF6174FF), 4, Icons.send_rounded, lang.add)
: _menuItem(Colors.orange, 2, Icons.block_rounded, lang.exit), : _menuItem(Colors.orange, 2, Icons.block_rounded, lang.exit),
_menuItem(Colors.red, 3, Icons.delete_rounded, lang.delete), _menuItem(Colors.red, 3, Icons.delete_rounded, lang.delete),
]; ];

19
lib/apps/group_chat/page.dart → lib/apps/group_chat/list.dart

@ -21,15 +21,28 @@ class _GroupChatListState extends State<GroupChatList> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final color = Theme.of(context).colorScheme; final color = Theme.of(context).colorScheme;
final lang = AppLocalizations.of(context);
final isDesktop = isDisplayDesktop(context); final isDesktop = isDisplayDesktop(context);
final provider = context.watch<GroupChatProvider>(); final provider = context.watch<GroupChatProvider>();
final orderKeys = provider.orderKeys; final orderKeys = provider.orderKeys;
final groups = provider.groups; final groups = provider.groups;
return Scaffold( return Scaffold(
body: ListView.builder( appBar: AppBar(
itemCount: orderKeys.length, title: Text(lang.groupChat),
itemBuilder: (BuildContext ctx, int index) => ListChat(group: groups[orderKeys[index]]), bottom: PreferredSize(
child: Container(color: const Color(0x40ADB0BB), height: 1.0),
preferredSize: Size.fromHeight(1.0)
),
),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 10.0),
child: ListView.builder(
itemCount: orderKeys.length,
itemBuilder: (BuildContext ctx, int index) => ListChat(group: groups[orderKeys[index]]),
)
),
), ),
floatingActionButton: FloatingActionButton( floatingActionButton: FloatingActionButton(
onPressed: () { onPressed: () {

37
lib/apps/service/add.dart

@ -3,8 +3,8 @@ import 'package:flutter/material.dart';
import 'package:esse/utils/adaptive.dart'; import 'package:esse/utils/adaptive.dart';
import 'package:esse/l10n/localizations.dart'; import 'package:esse/l10n/localizations.dart';
class GroupAddPage extends StatelessWidget { class ServiceAddPage extends StatelessWidget {
const GroupAddPage({Key key}) : super(key: key); const ServiceAddPage({Key key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -13,30 +13,21 @@ class GroupAddPage extends StatelessWidget {
final lang = AppLocalizations.of(context); final lang = AppLocalizations.of(context);
return Scaffold( return Scaffold(
appBar: AppBar(
title: Text(lang.addService),
bottom: PreferredSize(
child: Container(color: const Color(0x40ADB0BB), height: 1.0),
preferredSize: Size.fromHeight(1.0)
),
),
body: SafeArea( body: SafeArea(
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.symmetric(vertical: 10.0),
child: Column(children: <Widget>[ child: Center(
Row( child: Text(lang.wip, style: TextStyle(fontSize: 32.0))
children: [
if (!isDesktop)
GestureDetector(
onTap: () => Navigator.pop(context),
child: Container(width: 20.0, child: Icon(Icons.arrow_back, color: color.primary)),
),
const SizedBox(width: 15.0),
Expanded(child: Text(lang.addGroup, style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20.0))),
],
),
Expanded(
child: Center(
child: Text(lang.wip, style: TextStyle(fontSize: 32.0))
)
)
]
) )
) ),
) ),
); );
} }
} }

49
lib/apps/service/list.dart

@ -6,10 +6,7 @@ import 'package:esse/l10n/localizations.dart';
import 'package:esse/provider.dart'; import 'package:esse/provider.dart';
import 'package:esse/apps/service/models.dart'; import 'package:esse/apps/service/models.dart';
import 'package:esse/apps/assistant/page.dart'; import 'package:esse/apps/service/add.dart';
import 'package:esse/apps/assistant/provider.dart';
import 'package:esse/apps/assistant/models.dart';
import 'package:esse/apps/file/page.dart';
const List<InnerService> INNER_SERVICES = [ const List<InnerService> INNER_SERVICES = [
InnerService.Files, InnerService.Files,
@ -30,26 +27,44 @@ class _ServiceListState extends State<ServiceList> {
final lang = AppLocalizations.of(context); final lang = AppLocalizations.of(context);
final isDesktop = isDisplayDesktop(context); final isDesktop = isDisplayDesktop(context);
return Column( return Scaffold(
children: [ appBar: AppBar(
Column( title: Text(lang.services),
children: INNER_SERVICES.map((v) { bottom: PreferredSize(
final params = v.params(lang); child: Container(color: const Color(0x40ADB0BB), height: 1.0),
preferredSize: Size.fromHeight(1.0)
),
),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 10.0),
child: ListView.builder(
itemCount: INNER_SERVICES.length,
itemBuilder: (BuildContext ctx, int index) {
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: () => v.callback(), callback: () => INNER_SERVICES[index].callback(),
isDesktop: isDesktop, isDesktop: isDesktop,
); );
}).toList() }
)
), ),
// Expanded( ),
// child: ListView.builder( floatingActionButton: FloatingActionButton(
// itemCount: serviceKeys.length, onPressed: () {
// itemBuilder: (BuildContext ctx, int index) => _ListService(), final widget = ServiceAddPage();
// )), if (isDesktop) {
] Provider.of<AccountProvider>(context, listen: false).updateActivedWidget(widget);
} else {
Navigator.push(context, MaterialPageRoute(builder: (_) => widget));
}
},
child: const Icon(Icons.add, color: Colors.white),
backgroundColor: Color(0xFF6174FF),
),
); );
} }
} }

6
lib/apps/service/models.dart

@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
import 'package:esse/l10n/localizations.dart'; import 'package:esse/l10n/localizations.dart';
import 'package:esse/apps/assistant/page.dart'; import 'package:esse/apps/assistant/page.dart';
import 'package:esse/apps/file/page.dart'; import 'package:esse/apps/file/list.dart';
import 'package:esse/apps/group_chat/page.dart'; import 'package:esse/apps/group_chat/list.dart';
enum InnerService { enum InnerService {
Files, Files,
@ -26,7 +26,7 @@ extension InnerServiceExtension on InnerService {
Widget callback() { Widget callback() {
switch (this) { switch (this) {
case InnerService.Files: case InnerService.Files:
return FolderList(); return FilesList();
case InnerService.Assistant: case InnerService.Assistant:
return AssistantDetail(); return AssistantDetail();
case InnerService.GroupChat: case InnerService.GroupChat:

4
lib/l10n/localizations.dart

@ -112,8 +112,8 @@ abstract class AppLocalizations {
// homeage // homeage
String get addFriend; String get addFriend;
String get addGroup; String get addService;
String get groups; String get services;
String get devices; String get devices;
String get nightly; String get nightly;
String get scan; String get scan;

4
lib/l10n/localizations_en.dart

@ -141,9 +141,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override @override
String get addFriend => 'Add Friend'; String get addFriend => 'Add Friend';
@override @override
String get addGroup => 'Add Service'; String get addService => 'Add Service';
@override @override
String get groups => 'Services'; String get services => 'Services';
@override @override
String get devices => 'Devices'; String get devices => 'Devices';
@override @override

4
lib/l10n/localizations_zh.dart

@ -141,9 +141,9 @@ class AppLocalizationsZh extends AppLocalizations {
@override @override
String get addFriend => '添加好友'; String get addFriend => '添加好友';
@override @override
String get addGroup => '添加服务'; String get addService => '添加服务';
@override @override
String get groups => '服务列表'; String get services => '服务列表';
@override @override
String get devices => '关联设备'; String get devices => '关联设备';
@override @override

6
lib/pages/home.dart

@ -30,7 +30,7 @@ import 'package:esse/apps/chat/provider.dart';
import 'package:esse/apps/chat/list.dart'; import 'package:esse/apps/chat/list.dart';
import 'package:esse/apps/chat/detail.dart'; import 'package:esse/apps/chat/detail.dart';
import 'package:esse/apps/chat/add.dart'; import 'package:esse/apps/chat/add.dart';
import 'package:esse/apps/file/page.dart'; import 'package:esse/apps/file/list.dart';
import 'package:esse/apps/service/list.dart'; import 'package:esse/apps/service/list.dart';
import 'package:esse/apps/service/add.dart'; import 'package:esse/apps/service/add.dart';
import 'package:esse/apps/assistant/page.dart'; import 'package:esse/apps/assistant/page.dart';
@ -364,7 +364,7 @@ class DrawerWidget extends StatelessWidget {
}), }),
ListTile( ListTile(
leading: Icon(Icons.grid_view_rounded, color: color.primary), leading: Icon(Icons.grid_view_rounded, color: color.primary),
title: Text(lang.groups, textAlign: TextAlign.left, title: Text(lang.services, textAlign: TextAlign.left,
style: TextStyle(fontSize: 16.0)), style: TextStyle(fontSize: 16.0)),
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
@ -492,7 +492,7 @@ class _SessionWidget extends StatelessWidget {
coreWidget = AssistantDetail(); coreWidget = AssistantDetail();
break; break;
case SessionType.Files: case SessionType.Files:
coreWidget = FolderList(); coreWidget = FilesList();
break; break;
} }

Loading…
Cancel
Save