Flutter / JSON: 无法使用静态访问访问实例成员

Flutter / JSON: instance member cannot be accessed using static access

这是一个完整的代码片段,可以说明我遇到的问题。

import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setPreferredOrientations([
    DeviceOrientation.landscapeLeft,
    DeviceOrientation.landscapeRight,
  ]);
  SystemChrome.setEnabledSystemUIOverlays([]);
  runApp(
    MaterialApp(
      home: MyHomePage(),
    ),
  );
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key,}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

Future<latestVersion> fetchAlbum() async {
  final response = await http.get('https://api.jsonbin.io/b/5fd25941bef8b7699e57dce9');
  if (response.statusCode == 200) {
    print('yay');
    return latestVersion.fromJson(jsonDecode(response.body));
  } else {
    print('nay');
    throw Exception('Failed to load version');
  }
}

class latestVersion {
  final String title;
  final String version;

  latestVersion({this.version, this.title});

  factory latestVersion.fromJson(Map<String, dynamic> json) {
    return latestVersion(version: json['version'], title: json['title'],
    );
  }
}

class _MyHomePageState extends State<MyHomePage> {
  static Future<latestVersion> futureAlbum;

  @override
  void initState() {
    super.initState();
    futureAlbum = fetchAlbum();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.yellow,
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(''),
            Text('CURRENT'),
            Text('---------'),
            Text('0.37'),
            Text(''),
            Text('LATEST'),
            Text('--------'),
            Text(latestVersion.version),
            Text(''),
            Text(''),
          ],
        ),
      ),
    );
  }
}

尝试 运行 这段代码时,我在第 76 行遇到错误。

"instance member 'version' cannot be accessed using static access"

我怎样才能访问这个 json 解码变量?先感谢您。我是使用异步函数和 Future 的新手,如果能提供任何帮助,我将不胜感激。

错误意味着 version 不是静态变量。因此,要像这样访问它 LatestVersion.version 要么使 version 成为静态变量,要么使

替换

Text(LatestVersion.version),

Text(LatestVersion().version),

如果您的代码中的其他所有内容都正确,则上述代码应该可以工作。