I'm making a CheckUpdate part which is check latest version on the web(json) and trying to compare.
It parse JSON and converts into String.
And then it try to compare with appBuildNumber.
But it gives me error Failed Assertion: Boolean expression must not be null.
Any ideas on the issue?
P.S. Version checking server is https://raw.githubusercontent.com/TanzenT/LiteCalculator/master/version.json
Code
class CalculatorPageHolder extends StatefulWidget {
CalculatorPageHolder({Key key, this.title}) : super(key: key);
final String title;
@override
_CalculatorPageHolderState createState() => _CalculatorPageHolderState();
}
class _CalculatorPageHolderState extends State<CalculatorPageHolder> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
drawer: Drawer(child: mainDrawer()),
body: Center(
child: FutureBuilder<List<Version>>(
future: fetchVersion(),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return snapshot.hasData
? CalculatorHolder(version: snapshot.data)
: Center(child: CircularProgressIndicator());
},
)),
);
}
}
class CalculatorHolder extends StatelessWidget {
final List<Version> version;
CalculatorHolder({Key key, this.version}) : super(key: key);
Widget checkIsLatest() {
print(version[0].version);
if (getPackageInfo(version[0].version)) {
return Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[Text('latest')],
);
} else {
return Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[Text('not latest')],
);
}
}
@override
Widget build(BuildContext context) {
return Container(child: checkIsLatest());
}
}
getPackageInfo(String _currnetVersion) {
PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
String _buildNumber = packageInfo.buildNumber;
print('Client Version : $_buildNumber');
print('Server Version : $_currnetVersion');
if (_buildNumber == _currnetVersion)
return true;
else
return false;
});
}