flutter 世界扑动时间

9wbgstp7  于 2023-02-13  发布在  Flutter
关注(0)|答案(2)|浏览(153)

我正在尝试建立一个不同国家时区的世界应用程序。我可以使用API获得时间,但当api被调用时,该特定示例的时间被显示,并不是每分钟更新。有什么特殊的方法来实现这一点吗?

void getTime() async{
    Response response =
    await get('http://worldtimeapi.org/api/timezone/Australia/Sydney');
    Map dataAus = jsonDecode(response.body);
    String dateTimeAus = dataAus['datetime'];
    String offsetAus = dataAus['utc_offset'].substring(1, 3);
    DateTime nowAus = DateTime.parse(dateTimeAus);
    nowAus = nowAus.add(Duration(hours: int.parse(offsetAus)));
  }
j9per5c4

j9per5c41#

我想出了解决方案,可能还有很多其他有效的方法,反正我的工作已经完成了。使用计时器每秒钟调用API。

getTime(String country, continent) async {
    Response response =
        await get('http://worldtimeapi.org/api/timezone/$continent/$country');
    Map data = jsonDecode(response.body);
    String dateTime = data['datetime'];
    String offset = data['utc_offset'].substring(1, 3);
    DateTime time = DateTime.parse(dateTime);
    time = time.add(Duration(hours: int.parse(offset)));
    final timeStr = DateFormat('hh : mm a').format(time);
    return timeStr.substring(0, 10);
  }

  Timer timer;

  @override
  void initState() {
    super.initState();
    setState(() {
      Timer(
        Duration(seconds: 1) - Duration(milliseconds: _localDateTime.second),
        _updateTime,
      );
    });
  }
8i9zcol2

8i9zcol22#

void getTime() async{
    Response response =
    await 
    http.get(Uri.parse('http://worldtimeapi.org/api/timezone/Australia/Sydney'));
    Map dataAus = jsonDecode(response.body);
    String dateTimeAus = dataAus['datetime'];
    String offsetAus = dataAus['utc_offset'].substring(1, 3);
    DateTime nowAus = DateTime.parse(dateTimeAus);
    nowAus = nowAus.add(Duration(hours: int.parse(offsetAus)));
  }

相关问题