dart - Flutter Global 失去价值
问题描述
好的,我确信这可能是一个容易回答的问题,但是经过大量搜索后,我无法找到解决方案。
Flutter/Dart 中的一个如何在应用程序 XYZ 中创建一个变量,该变量在用户离开应用程序、使用另一个应用程序、允许手机进入睡眠等期间保持其值,然后再次打开 XYZ 应用程序.
我创建了一个小应用程序来演示该问题,如下所示。
静态变量 Globals.UID 可以向上递增,但如果应用程序被移开(什么术语描述正确使用另一个应用程序?)然后如前所述手机进入睡眠状态,当用户返回应用程序时 Globals.UID变量被重置回-1。
有时重置不是立即的,我必须让 IOS 手机休眠大约 5 分钟才能重新创建行为。
基本上我需要 Globals.UID 来保留它的价值,直到应用程序实际退出。
任何见解都将不胜感激。
import 'package:flutter/material.dart';
import 'package:test_flutter/Globals.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
Globals.UID ++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
Text ( "Global variable is:")
, Text ( Globals.UID.toString() )
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
在另一个名为 Globals.dart 的文件中
class Globals {
static int UID = -1;
}
谢谢!
解决方案
最终,该解决方案似乎主要通过使用 shared_preferences 库来解决。该解决方案带来了许多记录在案的问题,但要在应用程序置于后台时维护数据,甚至可能被用户杀死,shared_preferences 似乎是要走的路。
推荐阅读
- r - 根据给定列表排序数据集
- git - 将更改拉入空存储库时会调用什么 Git 挂钩?
- python - 如何在matplot中绘制箭头指向表格内的单元格
- java - 如何在 Java 9+ 上运行 JUnit 5 测试,省略“public”修饰符?
- c# - MassTransit - 从请求响应中获取响应正常,但从跳过的队列中添加和删除消息?
- python-3.x - 在 SUMO 中设置最大车辆数量的正确方法是什么?
- r - R中邻接矩阵的传递减少
- oracle - Oracle 侦听器状态显示在 DBCA 中
- python - 如何在 djangorestframework 中为我在使用世界天气在线 api 的数据后写入的 csv 文件创建下载 api 端点
- java - String[] 选项只显示一次