From 09e5531ab28f020feb1136f6ab53a65ac8bd62e8 Mon Sep 17 00:00:00 2001 From: Sun Date: Wed, 2 Jun 2021 11:16:38 +0800 Subject: [PATCH] update list UI --- lib/apps/file/{page.dart => list.dart} | 45 ++++++++++-------- lib/apps/group_chat/detail.dart | 2 +- lib/apps/group_chat/{page.dart => list.dart} | 19 ++++++-- lib/apps/service/add.dart | 37 ++++++--------- lib/apps/service/list.dart | 49 +++++++++++++------- lib/apps/service/models.dart | 6 +-- lib/l10n/localizations.dart | 4 +- lib/l10n/localizations_en.dart | 4 +- lib/l10n/localizations_zh.dart | 4 +- lib/pages/home.dart | 6 +-- 10 files changed, 100 insertions(+), 76 deletions(-) rename lib/apps/file/{page.dart => list.dart} (89%) rename lib/apps/group_chat/{page.dart => list.dart} (86%) diff --git a/lib/apps/file/page.dart b/lib/apps/file/list.dart similarity index 89% rename from lib/apps/file/page.dart rename to lib/apps/file/list.dart index e12a51c..c63c2f0 100644 --- a/lib/apps/file/page.dart +++ b/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/provider.dart'; -class FolderList extends StatefulWidget { +class FilesList extends StatefulWidget { @override - _FolderListState createState() => _FolderListState(); + _FilesListState createState() => _FilesListState(); } const List FILE_DIRECTORY = [ @@ -22,33 +22,23 @@ const List FILE_DIRECTORY = [ ["Trash", Icons.auto_delete_rounded], ]; -class _FolderListState extends State { +class _FilesListState extends State { int chooseIndex = 0; @override void initState() { super.initState(); - Future.delayed(Duration.zero, () { - final isDesktop = isDisplayDesktop(context); - if (isDesktop) { - loadFolder(true, chooseIndex); - } - }); + loadRecents(); } - loadFolder(bool isDesktop, int index) async { - final widget = FilePage(title: FILE_DIRECTORY[index][0]); - if (isDesktop) { - Provider.of(context, listen: false).updateActivedWidget(widget); - } else { - Navigator.push(context, MaterialPageRoute(builder: (_) => widget)); - } + loadRecents() { + // } changeItem(int index, bool isDesktop) { setState(() { chooseIndex = index; - loadFolder(isDesktop, index); + // loadFolder(isDesktop, index); }); } @@ -82,11 +72,26 @@ class _FolderListState extends State { @override Widget build(BuildContext context) { final color = Theme.of(context).colorScheme; + final lang = AppLocalizations.of(context); final isDesktop = isDisplayDesktop(context); - return ListView.builder( - itemCount: FILE_DIRECTORY.length, - itemBuilder: (BuildContext ctx, int index) => item(index, color, isDesktop), + return Scaffold( + appBar: AppBar( + 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), + ) + ), + ), ); } } diff --git a/lib/apps/group_chat/detail.dart b/lib/apps/group_chat/detail.dart index 0b0790d..132c49f 100644 --- a/lib/apps/group_chat/detail.dart +++ b/lib/apps/group_chat/detail.dart @@ -318,7 +318,7 @@ class _GroupChatDetailState extends State { return >[ _menuItem(Color(0xFF6174FF), 1, Icons.qr_code_rounded, lang.info), 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.red, 3, Icons.delete_rounded, lang.delete), ]; diff --git a/lib/apps/group_chat/page.dart b/lib/apps/group_chat/list.dart similarity index 86% rename from lib/apps/group_chat/page.dart rename to lib/apps/group_chat/list.dart index 2083a2b..2546bc2 100644 --- a/lib/apps/group_chat/page.dart +++ b/lib/apps/group_chat/list.dart @@ -21,15 +21,28 @@ class _GroupChatListState extends State { @override Widget build(BuildContext context) { final color = Theme.of(context).colorScheme; + final lang = AppLocalizations.of(context); final isDesktop = isDisplayDesktop(context); final provider = context.watch(); final orderKeys = provider.orderKeys; final groups = provider.groups; return Scaffold( - body: ListView.builder( - itemCount: orderKeys.length, - itemBuilder: (BuildContext ctx, int index) => ListChat(group: groups[orderKeys[index]]), + appBar: AppBar( + title: Text(lang.groupChat), + 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( onPressed: () { diff --git a/lib/apps/service/add.dart b/lib/apps/service/add.dart index ec6f79f..5c22d7f 100644 --- a/lib/apps/service/add.dart +++ b/lib/apps/service/add.dart @@ -3,8 +3,8 @@ import 'package:flutter/material.dart'; import 'package:esse/utils/adaptive.dart'; import 'package:esse/l10n/localizations.dart'; -class GroupAddPage extends StatelessWidget { - const GroupAddPage({Key key}) : super(key: key); +class ServiceAddPage extends StatelessWidget { + const ServiceAddPage({Key key}) : super(key: key); @override Widget build(BuildContext context) { @@ -13,30 +13,21 @@ class GroupAddPage extends StatelessWidget { final lang = AppLocalizations.of(context); 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( child: Padding( - padding: const EdgeInsets.all(10.0), - child: Column(children: [ - Row( - 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)) - ) - ) - ] + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: Center( + child: Text(lang.wip, style: TextStyle(fontSize: 32.0)) ) - ) - ) + ), + ), ); } } diff --git a/lib/apps/service/list.dart b/lib/apps/service/list.dart index 12903ee..1a973a4 100644 --- a/lib/apps/service/list.dart +++ b/lib/apps/service/list.dart @@ -6,10 +6,7 @@ import 'package:esse/l10n/localizations.dart'; import 'package:esse/provider.dart'; import 'package:esse/apps/service/models.dart'; -import 'package:esse/apps/assistant/page.dart'; -import 'package:esse/apps/assistant/provider.dart'; -import 'package:esse/apps/assistant/models.dart'; -import 'package:esse/apps/file/page.dart'; +import 'package:esse/apps/service/add.dart'; const List INNER_SERVICES = [ InnerService.Files, @@ -30,26 +27,44 @@ class _ServiceListState extends State { final lang = AppLocalizations.of(context); final isDesktop = isDisplayDesktop(context); - return Column( - children: [ - Column( - children: INNER_SERVICES.map((v) { - final params = v.params(lang); + return Scaffold( + appBar: AppBar( + title: Text(lang.services), + 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: INNER_SERVICES.length, + itemBuilder: (BuildContext ctx, int index) { + final params = INNER_SERVICES[index].params(lang); return ListInnerService( name: params[0], bio: params[1], logo: params[2], - callback: () => v.callback(), + callback: () => INNER_SERVICES[index].callback(), isDesktop: isDesktop, ); - }).toList() + } + ) ), - // Expanded( - // child: ListView.builder( - // itemCount: serviceKeys.length, - // itemBuilder: (BuildContext ctx, int index) => _ListService(), - // )), - ] + ), + floatingActionButton: FloatingActionButton( + onPressed: () { + final widget = ServiceAddPage(); + if (isDesktop) { + Provider.of(context, listen: false).updateActivedWidget(widget); + } else { + Navigator.push(context, MaterialPageRoute(builder: (_) => widget)); + } + }, + child: const Icon(Icons.add, color: Colors.white), + backgroundColor: Color(0xFF6174FF), + ), ); } } diff --git a/lib/apps/service/models.dart b/lib/apps/service/models.dart index 3450bdf..a7cb844 100644 --- a/lib/apps/service/models.dart +++ b/lib/apps/service/models.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:esse/l10n/localizations.dart'; import 'package:esse/apps/assistant/page.dart'; -import 'package:esse/apps/file/page.dart'; -import 'package:esse/apps/group_chat/page.dart'; +import 'package:esse/apps/file/list.dart'; +import 'package:esse/apps/group_chat/list.dart'; enum InnerService { Files, @@ -26,7 +26,7 @@ extension InnerServiceExtension on InnerService { Widget callback() { switch (this) { case InnerService.Files: - return FolderList(); + return FilesList(); case InnerService.Assistant: return AssistantDetail(); case InnerService.GroupChat: diff --git a/lib/l10n/localizations.dart b/lib/l10n/localizations.dart index 8d49a80..9bbae17 100644 --- a/lib/l10n/localizations.dart +++ b/lib/l10n/localizations.dart @@ -112,8 +112,8 @@ abstract class AppLocalizations { // homeage String get addFriend; - String get addGroup; - String get groups; + String get addService; + String get services; String get devices; String get nightly; String get scan; diff --git a/lib/l10n/localizations_en.dart b/lib/l10n/localizations_en.dart index e3c5107..8e2c3a1 100644 --- a/lib/l10n/localizations_en.dart +++ b/lib/l10n/localizations_en.dart @@ -141,9 +141,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get addFriend => 'Add Friend'; @override - String get addGroup => 'Add Service'; + String get addService => 'Add Service'; @override - String get groups => 'Services'; + String get services => 'Services'; @override String get devices => 'Devices'; @override diff --git a/lib/l10n/localizations_zh.dart b/lib/l10n/localizations_zh.dart index a826be4..aa86a01 100644 --- a/lib/l10n/localizations_zh.dart +++ b/lib/l10n/localizations_zh.dart @@ -141,9 +141,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get addFriend => '添加好友'; @override - String get addGroup => '添加服务'; + String get addService => '添加服务'; @override - String get groups => '服务列表'; + String get services => '服务列表'; @override String get devices => '关联设备'; @override diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 341446d..8708a5c 100644 --- a/lib/pages/home.dart +++ b/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/detail.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/add.dart'; import 'package:esse/apps/assistant/page.dart'; @@ -364,7 +364,7 @@ class DrawerWidget extends StatelessWidget { }), ListTile( 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)), onTap: () { Navigator.pop(context); @@ -492,7 +492,7 @@ class _SessionWidget extends StatelessWidget { coreWidget = AssistantDetail(); break; case SessionType.Files: - coreWidget = FolderList(); + coreWidget = FilesList(); break; }