dart 扑动-1天后将变量更改为零

0md85ypi  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(141)

我正在开发一个扑动应用程序,用户点击按钮,计数器增加一。
我想在一天后将计数器的值归零。
你能告诉我有什么办法可以做到吗?
谢谢

z5btuh9x

z5btuh9x1#

您可以使用flutter_cache包https://pub.dev/packages/flutter_cache/

import 'package:flutter_cache/flutter_cache.dart' as cache;

void main() async {
  // create new cache.
  cache.remember('key', 'data');
  cache.write('key', 'data');

  // add Cache lifetime on create
  cache.remember('key', 'data', 120);
  cache.write('key', 'data', 120);

  // load Cache by key
  // return `defaultValue` if key not exists
  cache.load('key', 'defaultValue');

  // destroy single cache by key
  cache.destroy('key');

  // destroy all cache
  cache.clear();

  await cache.remember('key', () {
    return 'test'; // or logic fetching data from api;
  });

  // or

  await cache.remember('key', () => 'test');

  cache.remember('key', 'data', 120); // saved for 2 mins or 120 seconds
  cache.write('key', 'data', 120);

  // multi depth map datatype.
  cache.remember('key', {
    'name': 'Ashraf Kamarudin',
    'depth2': {
      'name': 'depth2',
      'depth3': {'name': 'depth3'}
    }
  });

  cache.load('key'); // will return data in map datatype.
}
zf9nrax1

zf9nrax12#

  • 你的需求是被动的还是主动的?如果是主动的,你可以参考下面的代码。如果是被动的,你需要定期轮询
import 'package:flutter/material.dart';

class MyWidget extends StatefulWidget {
  const MyWidget({super.key});

  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> with WidgetsBindingObserver {
  DateTime? _presedDate;
  var number = 0;
  @override
  void initState() {
    _presedDate = DateTime.now();
    super.initState();
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState lifeCycle) async {
    var _isForeground = (lifeCycle == AppLifecycleState.resumed);
    if (_isForeground) checkNumber();
    super.didChangeAppLifecycleState(lifeCycle);
  }

  void checkNumber() {
    var currenDate = DateTime.now();
    var isToday = DateUtils.isSameDay(_presedDate, currenDate);
    if (!isToday) {
      number == 0;
      setState(() {});
    }
  }

  @override
  Widget build(BuildContext context) {
    return SafeArea(
        child: Scaffold(
            body: Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Text('$number'),
          TextButton(
              onPressed: () {
                number++;
                setState(() {});
                checkNumber();
              },
              child: Text('incrementNumber')),
        ],
      ),
    )));
  }
}

相关问题