Flutter: DateTime.now не отражает установленный вручную часовой пояс - PullRequest
2 голосов
/ 28 июня 2019

Чтобы проверить влияние разных часовых поясов, я вручную изменил настройки даты и времени и часовой пояс телефона.Однако DateTime.now() всегда возвращает время в CEST.

Мой телефон подключен к Wi-Fi, но не подключен к мобильной сети.

Это предполагаемое поведение?Я не уверен, к чему относится local в следующем:

Создает экземпляр DateTime с текущей датой и временем в местном часовом поясе.

Есть ли другой способ узнать время по телефону?


Flutter Doctor

[√] Flutter (Channel stable, v1.5.4-hotfix.2, on Microsoft Windows, locale en-US)
    • Flutter version 1.5.4-hotfix.2 at <path>\flutter
    • Framework revision 7a4c33425d (8 weeks ago), 2019-04-29 11:05:24 -0700
    • Engine revision 52c7a1e849
    • Dart version 2.3.0 (build 2.3.0-dev.0.5 a1668566e5)

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at <path>\android-sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: <path>\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    • All Android licenses accepted.

[√] Android Studio (version 3.4)
    • Android Studio at <path>\android-studio
    • Flutter plugin version 34.0.2
    • Dart plugin version 183.5901
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

[√] VS Code (version 1.35.1)
    • VS Code at <path>\VSCode\code.exe
    • Flutter extension version 3.1.0

[√] Connected device (1 available)
    • Wileyfox Swift • b6d5f2fa • android-arm64 • Android 7.1.2 (API 25)

• No issues found!

ПримерПриложение

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

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

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

  @override
  State<StatefulWidget> createState() => _DateTimeWidgetState();
}

class _DateTimeWidgetState extends State<DateTimeWidget> {
  DateTime time;
  Timer updateTimer;

  _DateTimeWidgetState() : time = DateTime.now();

  void timerFunction(Timer timer) {
    setState(() {
       this.time = DateTime.now();
    });
  }

  @override
  void initState() {
    super.initState();
    this.updateTimer = Timer.periodic(Duration(seconds: 1), this.timerFunction);
  }

  @override
  void dispose() {
    this.updateTimer.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Text("${this.time.toString()}");
  }
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Date Time',
      home: Scaffold(
        body: Container(
          child: Center(
            child: DateTimeWidget(),
          ),
        ),
      ),
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...