Вот код:
Код: Выделить всё
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
//import 'package:logging/logging.dart';
final filename = [
"https://ListeningToGod.org/SermonEngagement/TextFiles/2024-10-130Ia.json",
"https://ListeningToGod.org/SermonEngagement/TextFiles/2024-10-1301a.json",
"https://ListeningToGod.org/SermonEngagement/TextFiles/2024-10-1302a.json",
"https://ListeningToGod.org/SermonEngagement/TextFiles/2024-10-1303a.json",
"https://ListeningToGod.org/SermonEngagement/TextFiles/2024-10-1304a.json",
"https://ListeningToGod.org/SermonEngagement/TextFiles/2024-10-1305a.json",
"https://ListeningToGod.org/SermonEngagement/TextFiles/2024-10-1306a.json",
"https://ListeningToGod.org/SermonEngagement/TextFiles/2024-10-1307a.json",
"https://ListeningToGod.org/SermonEngagement/TextFiles/2024-10-1308a.json",
"https://ListeningToGod.org/SermonEngagement/TextFiles/2024-10-1309a.json",
];
void myLog(String s) {
if (kDebugMode) {
// final log = Logger('checkUrl');
// log.shout(s);
print(s);
}
}
Map ? userHeader = {"Content-type": "text/plain",
"Accept": "application/json","Access-Control-Allow-Origin": "*", 'Access-Control-Allow-Credentials': 'true','Access-Control-Allow-Methods' : 'OPTIONS, GET, POST','Access-Control-Allow-Headers': 'Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control'};
Future _checkUrl(String url) async {
try {
http.Response urlResponse = await http.get(Uri.parse(url),
headers: userHeader,
);
myLog("File = $url Status code = ${urlResponse.statusCode}");
return ((urlResponse.statusCode == 200) ? true : false);
} catch (error) {
myLog("Catch Error$error");
}
return false;
}
Future getMaxEngagementIndex() async {
int index = 0;
for (int i = 0; i < filename.length; i++) {
String engagementFileName = filename[i];
try {
bool filePresent = await _checkUrl(engagementFileName);
if (filePresent) {
myLog("Got File $engagementFileName");
index++;
}
} catch (error) {
myLog("Catch = $error");
}
}
return index;
}
Future main() async {
WidgetsFlutterBinding.ensureInitialized();
int numfiles = await getMaxEngagementIndex();
String num = numfiles.toString();
runApp(MyApp(num));
}
class MyApp extends StatelessWidget {
final String numfiles;
const MyApp(this.numfiles, {super.key});
Text seText(String text, double size, Color? color) {
return Text(
text,
textAlign: TextAlign.center,
style: TextStyle(
color: color,
fontSize: size,
fontWeight: FontWeight.bold,
),
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: true,
home: Scaffold(
body: Center(
child: seText('Num Files =$numfiles', 30, Colors.black),
),
),
);
}
}
Вот исключение, которое я получаю в Dartpad :
Catch ErrorClientException: ошибка XMLHttpRequest., uri=https://listeningtogod.org/SermonEngage ... s/XXX.json
Где XXX — имя каждого файла json.
Пакет http во flutter говорит, что он должен работать в Интернете, но у меня не получается.
Любая помощь по этому поводу?
Подробнее здесь: https://stackoverflow.com/questions/790 ... nes-or-sim