如何计算抖动中的日出和日落?

我希望能够日夜改变屏幕上的文字,具体取决于是否已设置了太阳。我找到了这个api(https://sunrise-sunset.org/api),最近又找到了这个软件包Sunrise_sunset:“ ^ 1.0.3”,但是我遇到了困难。

这是一个更大的项目的一部分,该项目将是一张地图(google_maps),它将根据一天中的时间(日出和日落)自动更改主题

我知道,每当使用await时,都必须使类异步,这已经完成了,但是却出现错误。

我只是将包示例标签中的代码复制到了我的项目中

https://pub.dev/packages/sunrise_sunset#-example-tab-

我真的很坚持这一点,因此,非常感谢您的帮助。

谢谢

import 'package:flutter/material.dart';
import 'package:sunrise_sunset/sunrise_sunset.dart';

void main() => runApp(JsonApiDemo());

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

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

class _JsonApiDemoState extends State<JsonApiDemo> async {

  var response = await SunriseSunset.getResults(latitude: 39.001735,longitude: -119.752744);

  if (response.success) {
    print('Sunrise: ${response.data.sunrise}');
    print('Sunset: ${response.data.sunset}');
  } else {
    print(response.error);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hello World!',theme: ThemeData(
        primarySwatch: Colors.blue,),home: Scaffold(
        appBar: AppBar(
          title: Text('Hello World!'),body: Center(
          child: Text('Hello World!'),);
  }
}

缺少State.build的具体实现。 尝试实现缺少的方法,或者使类抽象化。

一个类声明必须有一个主体,即使它为空。 尝试添加一个空的主体。

函数必须具有明确的参数列表。 尝试添加参数列表。

await表达式只能在异步函数中使用。 尝试用“ async”或“ async *”标记功能主体。

未引用声明“ build”。 尝试删除“ build”的声明。

wangshuaiws0 回答:如何计算抖动中的日出和日落?

1-不要将类标记为async-只有函数可以是异步的。

2-您应该从异步函数中调用程序包。最简单的方法是使用initState方法-注意initState本身并不异步-因此您将需要另一种方法。

3-在该异步方法中,存储结果并调用setState,以便重建窗口小部件以显示它们

4-在build中,您需要能够在获取结果的同时弥补差距-使用进度指示器等。(我刚刚将结果替换为 working )。

class _JsonApiDemoState extends State<JsonApiDemo> {
  DateTime sunrise;
  DateTime sunset;

  @override
  void initState() {
    super.initState();
    getSunData();
  }

  void getSunData() async {
    var response = await SunriseSunset.getResults(
      latitude: 39.001735,longitude: -119.752744,);

    if (response.success) {
      var data = response.data;
      setState(() {
        sunrise = data.sunrise;
        sunset = data.sunset;
      });

      print('Sunrise: $sunrise');
      print('Sunset: $sunset');
    } else {
      print(response.error);
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hello World!',theme: ThemeData(
        primarySwatch: Colors.blue,),home: Scaffold(
        appBar: AppBar(
          title: Text('Hello World!'),body: Center(
          child: Text(sunrise == null ? 'Working...' : '$sunrise-$sunset'),);
  }
}
本文链接:https://www.f2er.com/3124503.html

大家都在问