Skip to content
代码片段 群组 项目
提交 db9a0867 编辑于 作者: ling zhang's avatar ling zhang 提交者: Neil Wang
浏览文件

fix: #241 列表名称过长显示问题

上级 ef0a2694
No related branches found
No related tags found
无相关合并请求
import 'package:flutter/material.dart';
import 'package:jihu_gitlab_app/modules/projects/group_details/group_and_project.dart';
import 'package:jihu_gitlab_app/modules/projects/group_details/subgroup_page.dart';
import 'package:jihu_gitlab_app/modules/projects/group_details/subgroups/project/project_issues_page.dart';
import 'package:jihu_gitlab_app/modules/projects/group_details/subgroups/subgroup_list_model.dart';
class GroupAndProjectListTile extends StatefulWidget {
final GroupAndProject data;
const GroupAndProjectListTile({required this.data, Key? key}) : super(key: key);
@override
State<GroupAndProjectListTile> createState() => _GroupAndProjectListTileState();
}
class _GroupAndProjectListTileState extends State<GroupAndProjectListTile> {
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () => _onTap(widget.data),
child: Container(
decoration: const BoxDecoration(
color: Colors.white,
),
height: 80,
padding: const EdgeInsets.only(left: 12, right: 12),
child: SizedBox(
height: 79,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Image.asset(
widget.data.icon,
width: 16,
height: 16,
),
const SizedBox(width: 12),
Expanded(
flex: 1,
child: Text(
widget.data.name,
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: Theme.of(context).textTheme.titleLarge,
),
),
const Icon(
Icons.keyboard_arrow_right,
color: Colors.grey,
)
],
),
),
),
);
}
void _onTap(GroupAndProject item) {
if (item.type == SubgroupItemType.group || item.type == SubgroupItemType.subgroup) {
final params = <String, dynamic>{'groupId': item.id, 'name': item.name, 'relativePath': item.relativePath};
Navigator.of(context).pushNamed(SubgroupPage.routeName, arguments: params);
} else {
final params = <String, dynamic>{'projectId': item.id, 'name': item.name, 'relativePath': item.relativePath, "groupId": item.parentId};
Navigator.of(context).pushNamed(ProjectIssuesPage.routeName, arguments: params);
}
}
}
......@@ -3,10 +3,9 @@ import 'package:flutter/material.dart';
import 'package:jihu_gitlab_app/core/dependency_injector.dart';
import 'package:jihu_gitlab_app/core/load_state.dart';
import 'package:jihu_gitlab_app/core/widgets/no_data_view.dart';
import 'package:jihu_gitlab_app/modules/projects/group_and_project_list_tile.dart';
import 'package:jihu_gitlab_app/modules/projects/group_details/group_and_project.dart';
import 'package:jihu_gitlab_app/modules/projects/group_details/subgroups/project/project_issues_page.dart';
import '../subgroup_page.dart';
import 'subgroup_list_model.dart';
class SubgroupListPage extends StatefulWidget {
......@@ -54,7 +53,6 @@ class _SubgroupListPageState extends State<SubgroupListPage> {
}
Widget subgroupListView() {
final textTheme = Theme.of(context).textTheme;
return ValueListenableBuilder<List<GroupAndProject>>(
valueListenable: _model.notifier,
builder: (BuildContext context, List<GroupAndProject> data, Widget? child) {
......@@ -64,55 +62,9 @@ class _SubgroupListPageState extends State<SubgroupListPage> {
return ClipRRect(
borderRadius: BorderRadius.circular(4.0),
child: ListView.separated(
itemCount: data.length,
separatorBuilder: (context, index) {
return const Divider(height: .5, indent: 12.0, endIndent: 12.0, color: Color(0xFFDDDDDD));
},
itemBuilder: (context, index) => InkWell(
onTap: () {
final item = data[index];
if (item.type == SubgroupItemType.group || item.type == SubgroupItemType.subgroup) {
final params = <String, dynamic>{'groupId': item.id, 'name': item.name, 'relativePath': item.relativePath};
Navigator.of(context).pushNamed(SubgroupPage.routeName, arguments: params);
} else {
final params = <String, dynamic>{'projectId': item.id, 'name': item.name, 'relativePath': item.relativePath, "groupId": item.parentId};
Navigator.of(context).pushNamed(ProjectIssuesPage.routeName, arguments: params);
}
},
child: Container(
decoration: const BoxDecoration(
color: Colors.white,
),
height: 80,
padding: const EdgeInsets.only(left: 12, right: 12),
child: SizedBox(
height: 79,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Image.asset(
data[index].icon,
width: 16,
height: 16,
),
const SizedBox(width: 12),
Text(
data[index].name,
style: textTheme.titleLarge,
),
const Spacer(
flex: 1,
),
const Icon(
Icons.keyboard_arrow_right,
color: Colors.grey,
)
],
),
),
),
),
));
itemCount: data.length,
separatorBuilder: (context, index) => const Divider(height: .5, indent: 12.0, endIndent: 12.0, color: Color(0xFFDDDDDD)),
itemBuilder: (context, index) => GroupAndProjectListTile(data: data[index])));
});
}
}
......@@ -4,7 +4,7 @@ import 'package:jihu_gitlab_app/core/load_state.dart';
import 'package:jihu_gitlab_app/core/user_provider.dart';
import 'package:jihu_gitlab_app/core/widgets/no_data_view.dart';
import 'package:jihu_gitlab_app/core/widgets/unauthorized_view.dart';
import 'package:jihu_gitlab_app/modules/projects/group_details//subgroup_page.dart';
import 'package:jihu_gitlab_app/modules/projects/group_and_project_list_tile.dart';
import 'package:jihu_gitlab_app/modules/projects/group_details/group_and_project.dart';
import 'package:provider/provider.dart';
......@@ -35,7 +35,6 @@ class _ProjectsGroupsPageState extends State<ProjectsGroupsPage> {
}
Widget groupList() {
final textTheme = Theme.of(context).textTheme;
return ValueListenableBuilder<List<GroupAndProject>>(
valueListenable: _model.notifier,
builder: (BuildContext context, List<GroupAndProject> data, Widget? child) {
......@@ -45,34 +44,9 @@ class _ProjectsGroupsPageState extends State<ProjectsGroupsPage> {
return ClipRRect(
borderRadius: BorderRadius.circular(4.0),
child: ListView.separated(
itemCount: data.length,
separatorBuilder: (context, index) {
return const Divider(height: .5, indent: 12.0, endIndent: 12.0, color: Color(0xFFDDDDDD));
},
itemBuilder: (context, index) => InkWell(
onTap: () {
final params = <String, dynamic>{'groupId': data[index].id, 'name': data[index].name, 'relativePath': data[index].relativePath};
Navigator.of(context).pushNamed(SubgroupPage.routeName, arguments: params);
},
child: Container(
decoration: const BoxDecoration(color: Colors.white),
height: 80,
padding: const EdgeInsets.only(left: 12, right: 12),
child: SizedBox(
height: 79,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Image.asset(data[index].icon, width: 16, height: 16),
const SizedBox(width: 12),
Text(data[index].name, maxLines: 2, overflow: TextOverflow.ellipsis, style: textTheme.titleLarge),
const Spacer(flex: 1),
const Icon(Icons.keyboard_arrow_right, color: Colors.grey)
],
)),
),
),
),
itemCount: data.length,
separatorBuilder: (context, index) => const Divider(height: .5, indent: 12.0, endIndent: 12.0, color: Color(0xFFDDDDDD)),
itemBuilder: (context, index) => GroupAndProjectListTile(data: data[index])),
);
},
);
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册