簡體   English   中英

如何將字符串轉換為 flutter 中的 integer 的時、分、秒時間?

[英]How to convert String to Time in Hour, Minute, Second as integer in flutter?

我正在制作一個應用程序,我想借助 flutter_local_notification package 向用戶發送通知。 我想每天在某個時間向用戶發送通知,為此,我使用以下 function:

Future<void> showDailyAtTime() async {
////////// <<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>
var time = Time(16, 02, 00); ////// line 1 <---------- (Hour, Minute, Second)
////////// <<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>
var androidChannelSpecifics = AndroidNotificationDetails(
  'CHANNEL_ID 2',
  'CHANNEL_NAME 2',
  "CHANNEL_DESCRIPTION 2",
  importance: Importance.max,
  priority: Priority.high,
);
var iosChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics =
NotificationDetails(android: androidChannelSpecifics, iOS: iosChannelSpecifics);
await flutterLocalNotificationsPlugin.showDailyAtTime(
  0,
  'Test Title at ${time.hour}:${time.minute}.${time.second}',
  'Test Body', //null
  time,
  platformChannelSpecifics,
  payload: 'Test Payload',
 );
}

我使用這樣的共享首選項存儲時間:

ttime = '${time.hour} : ${time.minute} : ${time.second}';

然后我像這樣設置它:

Future<void> _setNotifyTime() async{
final prefs = await SharedPreferences.getInstance();
final savedNotifyTime = await _getStringFromSharedPrefs();
await prefs.setString('notificationTime', ttime);
//print("this $savedNotifyTime");
return savedNotifyTime;
}

然后我借助以下代碼從共享偏好中獲取信息:

Future<String> _getStringFromSharedPrefs() async{
final prefs = await SharedPreferences.getInstance();
notifyTime = prefs.getString('notificationTime');
return notifyTime;
}

如何將此保存的時間轉換為所需的格式(如第 1 行所示),值是 int? 我該怎么做? 請幫我。

感謝您提前回復

var splited = notifyTime.split(':');
int hour = int.parse(splited[0]);
int minute = int.parse(splited[1]);
int second = int.parse(splited[2]);

您可以像Jorge Vieira的回答那樣進行模式拆分,或者您自己保存解析邏輯並將其存儲為整數。


對於設置,您可以使用 setInt()

prefs.setInt("H",time.hours);
prefs.setInt("m",time.minutes);
prefs.setInt("s",time.seconds);

為了得到它,你可以使用 getInt()

int hours = prefs.getInt("H");
int mins = prefs.getInt("m");
int secs = prefs.getInt("s");

然后從您的方法中返回時間 object

return Time(hours,mins,secs);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM