It seems initstate not working on screen render I am not sure why. I also ran print statement under initState and it prints nothing. It always grabs the empty variable of left/rightNewsinfo or left/rightTitle because it gives "Invalid argument(s): No host specified in URI file:///" error everytime I run it. I installed SimpleLinkPreview function from pub.dev and it gives correct print statement. I think error is coming from my code. I am new on flutter. Null safety is enabled
import 'package:flutter/material.dart';
import 'package:news_upload/widgets/news_box.dart';
import 'package:simple_link_preview/simple_link_preview.dart';
class ActualNews extends StatefulWidget {
static const routeName = '/actualNews';
static List<dynamic> leftNewsInfo = [];
static List<dynamic> rightNewsInfo = [];
@override
State<ActualNews> createState() => _ActualNewsState();
}
class _ActualNewsState extends State<ActualNews> {
final leftNewsLink =
"https://www.ndtv.com/india-news/goa-congress-requests-speaker-to-disqualify-mlas-michael-lobo-digambar-kamat-after-accusing-them-of-planning-defections-3146905";
var rightNewsLink =
"https://zeenews.india.com/india/kaali-poster-row-tmc-mp-insults-maa-kali-but-mamata-banerjee-smriti-irani-lashes-out-at-mahua-moitra-2484047.html";
String leftTitle = '';
String leftImage = '';
String rightTitle = '';
String rightImage = '';
Future<void> getNews(lInfo, rInfo) async {
var L = await SimpleLinkPreview.getPreview(leftNewsLink);
var R = await SimpleLinkPreview.getPreview(rightNewsLink);
leftTitle = L!.title!;
leftImage = L.image!;
rightTitle = R!.title!;
rightImage = R.image!;
lInfo = [leftTitle, leftImage];
rInfo = [rightTitle, rightImage];
}
@override
void initState() {
super.initState();
Future.delayed(const Duration(seconds: 0), () {
getNews(ActualNews.leftNewsInfo, ActualNews.rightNewsInfo);
print(ActualNews.leftNewsInfo[0]);
print("hello world");
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
alignment: Alignment.topLeft,
children: <Widget>[
NewsBox(ActualNews.leftNewsInfo, ActualNews.rightNewsInfo),
IconButton(
icon: const Padding(
padding: EdgeInsets.all(20.0),
child: Icon(Icons.arrow_back),
),
onPressed: () {
Navigator.pop(context);
},
),
],
));
}
}