Puzzak's Flutter
20 subscribers
156 photos
42 videos
12 files
23 links
Junior developer's journey in the Flutter realm
@puzzaks for more info
Download Telegram
Вчусь використовувати ПРОКСІ.
Дуже проста штука, працює миттєво через дефолтний пакет http.dart.

Все що потрібно додати до головного класу це
class MyAppState extends State<MyApp> {
void initState() {
HttpOverrides.global = MyHttpOverrides(); // ОЦЯ СТРОКА
super.initState();
}
...

А потім додати новий клас:

class MyHttpOverrides extends HttpOverrides{
final ipAddress = '666.66.66.6';
int port = 666;
final credentials = HttpClientBasicCredentials('login', 'password');
@override
HttpClient createHttpClient(SecurityContext? context){
return super.createHttpClient(context)
..addProxyCredentials(ipAddress, port, 'main', credentials)
..findProxy = ((uri) => 'PROXY $ipAddress:$port')
..badCertificateCallback = (X509Certificate cert, String host, int port)=> true;
}
}

І абсолютно всі запити додатку будуть йти через вказаний проксі-сервер :)
Ніяких змін у тому як робляться запити робити не потрібно)
Puzzak's Flutter
Вчусь використовувати ПРОКСІ. Дуже проста штука, працює миттєво через дефолтний пакет http.dart. Все що потрібно додати до головного класу це class MyAppState extends State<MyApp> { void initState() { HttpOverrides.global = MyHttpOverrides(); // ОЦЯ…
Перевірка доступності проксі
Продовжуючи тему проксі, варто також додати що зазвичай варто перевіряти чи доступний проксі-сервер, та чи підходять облікові данні. В випадку з проксі який я використовую, мені достатньо наступної функції:
Future<bool> pingProxy(address, creds) async {
try {
final response = await http.head(
Uri.http(address),
headers: {
"Proxy-Authorization": "Basic ${base64.encode(utf8.encode(creds))}"
}
);
return response.statusCode == 503;
} catch (e) {
return false;
}
}

Яка буде повертати булеве значення (чи вірні дані).

Викликати цю функцію треба так:
await pingProxy("$proxyaddress:$proxyport", "$proxyusername:$proxypassword").then((value){
if(value){
//Все вірно, активуємо проксі
}
});


Зверніть увагу на змінні $proxyaddress, $proxyport, $proxyusername, $proxypassword.
❤‍🔥1
Puzzak's
Оаоао, коли підтримка у Flutter? :9to5linux
Скоро спробую показати як виглядає адаптивність кольорів на різних платформах. В усіх моїх додатках ієрархія будь-якого екрану виглядає приблизно отак:
  Widget build (){
DynamicColorBuilder (){
  LayoutBuilder (){
return Widget (){}
}
}
}

Перший білдер слідкує за кольоровою темою пристрою та змінює її динамічно, другий - слідкує за орієнтацією пристрою та робить можливою адаптивність (зміну розміру/пропорцій вікна, керує інтерфейсом в портретній та альбомній орієнтації, тощо).

Приклад можна побачити отута :)
Forwarded from Puzzak's (Puzzak)
Media is too big
VIEW IN TELEGRAM
Чесно кажучи, я не певен що це те чого я намагався досягти, але виглядає круто
Forwarded from Puzzak's (Puzzak)
This media is not supported in your browser
VIEW IN TELEGRAM
Пам'ятаєте цього чувака? Оце він зараз.
Forwarded from Puzzak's (Puzzak)
app-release.apk
21.4 MB
Ранній доступ 👀
Я не дуже довіряю начальству, тож якщо зі мною не розрахуються, буде весело :)
Новий проект 👀
Stay tuned 🙃
Puzzak's Flutter
Вчусь працювати з telegram api
This media is not supported in your browser
VIEW IN TELEGRAM
Авторизація клієнта пройдена, далі треба реалізувати авторизацію користувача (або бота)

А після цього можна... А потім розкажу :)
Puzzak's Flutter
Photo
This media is not supported in your browser
VIEW IN TELEGRAM
60 мегабайт даних генерує клієнт у базі даних ДО моменту логіну. Це саме TDLib, без абсолютно нічого крім самого клієнту
Puzzak's Flutter
60 мегабайт даних генерує клієнт у базі даних ДО моменту логіну. Це саме TDLib, без абсолютно нічого крім самого клієнту
Розваги джунів, робити помилку неправильного приведення даних в потоці, яка не задокументована ніде і навіть для самого рушія програми стала сюрпризом