瀏覽代碼

change something for userrole 1 done

master
amin 1 年之前
父節點
當前提交
4153d0522f
共有 4 個文件被更改,包括 173 次插入150 次删除
  1. +29
    -17
      lib/global/global_state/global_state.dart
  2. +41
    -37
      lib/screens/meeting/diolog_meetings_filters.dart
  3. +42
    -38
      lib/screens/private_meeting/dilog_privateMeetings_filters.dart
  4. +61
    -58
      lib/screens/report/screen.dart

+ 29
- 17
lib/global/global_state/global_state.dart 查看文件

@@ -190,9 +190,12 @@ class GlobalState extends ChangeNotifier {
Status allFiltersStatus = Status.empty;

Future<Status> getAllFiltersItems({bool refresh = false}) async {
final int role = setting.userLocalDb.getUser().role ?? -1;

allFiltersStatus = Status.loading;
notifyListeners();
if (_isDataAlreadyLoaded() && !refresh) {

if (_isDataAlreadyLoaded(role) && !refresh) {
allFiltersStatus = Status.ready;
} else {
allFiltersStatus = Status.loading;
@@ -200,39 +203,48 @@ class GlobalState extends ChangeNotifier {

notifyListeners();

await _fetchAllData(refresh: refresh);
await _fetchAllData(role: role, refresh: refresh);

_updateAllFiltersStatus();
_updateAllFiltersStatus(role);
notifyListeners();

return allFiltersStatus;
}

bool _isDataAlreadyLoaded() {
bool _isDataAlreadyLoaded(int role) {
return locationsModel != null &&
locationsModel!.isNotEmpty &&
usersModel != null &&
usersModel!.isNotEmpty &&
meetingsManagerModel != null &&
meetingsManagerModel!.isNotEmpty &&
subjectsModel != null &&
subjectsModel!.isNotEmpty;
subjectsModel!.isNotEmpty &&
(role == 1 || (usersModel != null && usersModel!.isNotEmpty)) &&
(role == 1 ||
(meetingsManagerModel != null && meetingsManagerModel!.isNotEmpty));
}

Future<void> _fetchAllData({required bool refresh}) async {
await Future.wait([
Future<void> _fetchAllData({required int role, required bool refresh}) async {
final List<Future<void>> tasks = [
getLocations(refresh: refresh),
getMeetingsManager(refresh: refresh),
getSubjects(refresh: refresh),
getUsers(refresh: refresh),
]);
];

// Only add getUsers if role is not 1
if (role != 1) {
tasks.add(getUsers(refresh: refresh));
}

// Only add getMeetingsManager if role is not 1
if (role != 1) {
tasks.add(getMeetingsManager(refresh: refresh));
}

await Future.wait(tasks);
}

void _updateAllFiltersStatus() {
void _updateAllFiltersStatus(int role) {
if (locationsStatus == Status.ready &&
subjectsStatus == Status.ready &&
usersStatus == Status.ready &&
meetingsManagerStatus == Status.ready) {
(role == 1 || usersStatus == Status.ready) &&
(role == 1 || meetingsManagerStatus == Status.ready)) {
allFiltersStatus = Status.ready;
} else {
allFiltersStatus = Status.error;


+ 41
- 37
lib/screens/meeting/diolog_meetings_filters.dart 查看文件

@@ -2,6 +2,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:qadirneyriz/global/global_state/global_state.dart';
import 'package:qadirneyriz/setting/setting.dart';
import 'package:qadirneyriz/widgets/ExpansionTileCustom.dart';
import 'package:qadirneyriz/widgets/error_widget.dart';
import 'package:qadirneyriz/config/config.dart';
@@ -237,43 +238,46 @@ class _DiologMeetingsFiltersState extends State<DiologMeetingsFilters> {
),
],
),
ExpansionTileCustom(
title: AppLocalizations.of(context)!
.meetingmanager,
widgets: <Widget>[
ListView.builder(
primary: false,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: globalState
.meetingsManagerModel!.length,
itemBuilder:
(BuildContext context, int index) {
final items = globalState
.meetingsManagerModel![index];
return RadioListTile<int>(
toggleable: true,
groupValue: meetingsState
.selectedManagersId,
value: items.id ?? -1,
title: Text(
items.name ?? '',
style: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 14),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
activeColor: config.ui.secendGreen,
onChanged: (int? newValue) {
meetingsState.selectManager(
newValue ?? null);
},
);
},
),
],
),
if (setting.userLocalDb.getUser().role != 1)
ExpansionTileCustom(
title: AppLocalizations.of(context)!
.meetingmanager,
widgets: <Widget>[
ListView.builder(
primary: false,
physics:
NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: globalState
.meetingsManagerModel!.length,
itemBuilder: (BuildContext context,
int index) {
final items = globalState
.meetingsManagerModel![index];
return RadioListTile<int>(
toggleable: true,
groupValue: meetingsState
.selectedManagersId,
value: items.id ?? -1,
title: Text(
items.name ?? '',
style: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 14),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
activeColor:
config.ui.secendGreen,
onChanged: (int? newValue) {
meetingsState.selectManager(
newValue ?? null);
},
);
},
),
],
),
ExpansionTileCustom(
title:
AppLocalizations.of(context)!.subject,


+ 42
- 38
lib/screens/private_meeting/dilog_privateMeetings_filters.dart 查看文件

@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:qadirneyriz/global/global_state/global_state.dart';
import 'package:qadirneyriz/screens/private_meeting/state.dart';
import 'package:qadirneyriz/setting/setting.dart';
import 'package:qadirneyriz/widgets/ExpansionTileCustom.dart';
import 'package:qadirneyriz/widgets/error_widget.dart';
import 'package:qadirneyriz/config/config.dart';
@@ -243,44 +244,47 @@ class _DiologPrivateMeetingsFiltersState
),
],
),
ExpansionTileCustom(
title: AppLocalizations.of(context)!
.meetingmanager,
widgets: <Widget>[
ListView.builder(
primary: false,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: globalState
.meetingsManagerModel!.length,
itemBuilder:
(BuildContext context, int index) {
final items = globalState
.meetingsManagerModel![index];
return RadioListTile<int>(
toggleable: true,
groupValue: privateMeetingsState
.selectedManagersId,
value: items.id ?? -1,
title: Text(
items.name ?? '',
style: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 14),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
activeColor: config.ui.secendGreen,
onChanged: (int? newValue) {
privateMeetingsState
.selectManager(
newValue ?? null);
},
);
},
),
],
),
if (setting.userLocalDb.getUser().role != 1)
ExpansionTileCustom(
title: AppLocalizations.of(context)!
.meetingmanager,
widgets: <Widget>[
ListView.builder(
primary: false,
physics:
NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: globalState
.meetingsManagerModel!.length,
itemBuilder: (BuildContext context,
int index) {
final items = globalState
.meetingsManagerModel![index];
return RadioListTile<int>(
toggleable: true,
groupValue: privateMeetingsState
.selectedManagersId,
value: items.id ?? -1,
title: Text(
items.name ?? '',
style: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 14),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
activeColor:
config.ui.secendGreen,
onChanged: (int? newValue) {
privateMeetingsState
.selectManager(
newValue ?? null);
},
);
},
),
],
),
ExpansionTileCustom(
title:
AppLocalizations.of(context)!.subject,


+ 61
- 58
lib/screens/report/screen.dart 查看文件

@@ -196,108 +196,111 @@ class _FiltersItemInReportState extends State<FiltersItemInReport> {
),
],
),
if (setting.userLocalDb.getUser().role != 1)
ExpansionTileCustom(
title: AppLocalizations.of(context)!
.meetingmanager,
widgets: <Widget>[
ListView.builder(
primary: false,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: globalState
.meetingsManagerModel!.length,
itemBuilder:
(BuildContext context, int index) {
final items = globalState
.meetingsManagerModel![index];
return RadioListTile<int>(
toggleable: true,
groupValue:
reportState.selectedManagersId,
value: items.id ?? -1,
title: Text(
items.name ?? '',
style: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 14),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
activeColor: config.ui.secendGreen,
onChanged: (int? newValue) {
reportState
.selectManager(newValue ?? null);
},
);
},
),
],
),
ExpansionTileCustom(
title:
AppLocalizations.of(context)!.meetingmanager,
title: AppLocalizations.of(context)!.subject,
widgets: <Widget>[
ListView.builder(
primary: false,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount:
globalState.meetingsManagerModel!.length,
itemCount: globalState.subjectsModel!.length,
itemBuilder:
(BuildContext context, int index) {
final items = globalState
.meetingsManagerModel![index];
final items =
globalState.subjectsModel![index];
return RadioListTile<int>(
toggleable: true,
groupValue:
reportState.selectedManagersId,
groupValue: reportState.selectedSubjectId,
value: items.id ?? -1,
title: Text(
items.name ?? '',
items.subject ?? '',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 14),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
activeColor: config.ui.secendGreen,
onChanged: (int? newValue) {
reportState
.selectManager(newValue ?? null);
.selectSubject(newValue ?? null);
},
);
},
),
],
),
ExpansionTileCustom(
title: AppLocalizations.of(context)!.subject,
widgets: <Widget>[
ListView.builder(
primary: false,
Divider(),
if (setting.userLocalDb.getUser().role != 1)
SizedBox(
height: 250,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: globalState.subjectsModel!.length,
primary: false,
itemCount: meetingStatuses.length,
itemBuilder:
(BuildContext context, int index) {
final items =
globalState.subjectsModel![index];
final items = meetingStatuses[index];
return RadioListTile<int>(
toggleable: true,
groupValue: reportState.selectedSubjectId,
value: items.id ?? -1,
groupValue: reportState.selectedStatusId,
value: items.id,
title: Text(
items.subject ?? '',
items.title,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 14),
overflow: TextOverflow.ellipsis,
),
activeColor: config.ui.secendGreen,
onChanged: (int? newValue) {
reportState
.selectSubject(newValue ?? null);
reportState.selectStatusMeeting(
newValue ?? null);
},
);
},
),
],
),
Divider(),
SizedBox(
height: 250,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
primary: false,
itemCount: meetingStatuses.length,
itemBuilder: (BuildContext context, int index) {
final items = meetingStatuses[index];
return RadioListTile<int>(
toggleable: true,
groupValue: reportState.selectedStatusId,
value: items.id,
title: Text(
items.title,
maxLines: 1,
style: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 14),
overflow: TextOverflow.ellipsis,
),
activeColor: config.ui.secendGreen,
onChanged: (int? newValue) {
reportState.selectStatusMeeting(
newValue ?? null);
},
);
},
),
),
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 20, vertical: 50),


Loading…
取消
儲存