Вы можете проверить, является ли это последней из первой страницы, сравнив onPageChanged
методы index
с вашим collection.length
, например, так:
PageView(
onPageChanged: (index) {
if (index + 1 == myCollection.length) {
loadNextChapter();
} else if (index == 0) {
loadPreviousChapter();
}
},
);
Редактировать 1:
Используя GestureDetector:
PageView mPageView = PageView(
onPageChanged: (index) {
if (index + 1 == myCollection.length) {
hasReachedEnd = true;
} else if (index == 0) {
hasReachedFirst = true
} else {
hasReachedFirst = false
hasReachedEnd = false
}
},
);
GestureDetector mGestureDetector = GestureDetector(
child: mPageView
onHorizontalDragEnd: (dragEndDetails) {
if (dragEndDetails.primaryVelocity < 0 && hasReachedStart) {
loadPreviousChapter(); //if you want to go to the next page once fetched you can do so by adding .then()
} else if (dragEndDetails.primaryVelocity > 0 && hasReachedEnd) {
loadNextChapter();
}
}
);
Всякий раз, когда мы прокручиваем влево или вправо, мы проверяем, в каком направлении мы проводим, и находимся ли мы в конце или в начале списка элементов.
Всякий раз, когда мы прокручиваем на новую страницу, мы проверяем, находимся ли мы в конце или в начале пунктов.
Сочетая их, вы получите желаемый эффект.
Это должно сделать то, в чем Вы нуждаетесь:
<Directory /APP>
Order Allow,Deny
Allow from 160.120.25.65
Allow from 127.0.0.0/8
</Directory>
Посмотрите mod_authz_host
документация для деталей.
Какую версию Apache Вы выполняете? Механизмы разрешения IP, AFAIK, обеспеченный mod_authz_host, который был представлен в 2,2 (хорошо, 2.1 технически). Если Вы действительно имеете 2.2, удостоверьтесь, что это не было скомпилировано с отключенным mod_authz_host.
Вообще говоря, тем не менее, можно найти более простое, и больше надежного решения является iptables или другим брандмауэрингом, предложенным в других ответах.
Я предложил бы Iptables с этой целью. поместите правило в iptables, который везде, где целевой порт является номером порта Вашей апачской машины и исходного IP, IP-адрес critix машины, машина Linux должна отбросить тот пакет. Этот путь решил бы Вашу проблему, при отсутствии других приложений, размещенных на апачах Вашей машины, которая должна быть открыта для всего дюйм/с. Примером перспективного правила мог быть:-
iptables -I INPUT 1 -s 160.120.25.65 -d <port_of_apache_on_your_machine> -j DROP
Это должно решить Вашу проблему, после того как Вы заменяете ее собственным значением
Я, вероятно, использовал бы правило iptables для этого. Я не уверен, каков пример, который Вы отправили, но необходимо смочь настроить примерно любой брандмауэр для работы как Вы, хотят это.