Flutter 初學者需要幫助。即使我們關閉應用程式并使用 Getx 或其他一些 Statemanegment 重新訪問應用程式,如何將滑塊保持在 is 位置并保持 is 值。在本教程Flutter Switch 之后,我嘗試使用 Slider 進行相同的操作,但是我的編碼知識還不夠,我找不到任何使用 Slider 進行相同操作的教程。
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
static const String _title = 'Flutter Code Sample';
@override
Widget build(BuildContext context) {
return MaterialApp(
title: _title,
home: Scaffold(
appBar: AppBar(title: const Text(_title)),
body: const MyStatefulWidget(),
),
);
}
}
class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({Key? key}) : super(key: key);
@override
State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
double _currentSliderValue = 20;
@override
Widget build(BuildContext context) {
return Slider(
value: _currentSliderValue,
min: 0,
max: 100,
divisions: 5,
label: _currentSliderValue.round().toString(),
onChanged: (double value) {
setState(() {
_currentSliderValue = value;
});
},
);
}
}
uj5u.com熱心網友回復:
您鏈接的教程對于初學者來說似乎很復雜,因為它同時解釋了存盤和狀態管理。
對我來說似乎更容易,只專注于存盤部分。
您可以使用 shared_prefences,如官方 flutter pages 中所述。但這僅適用于簡單資料(get_storage 也是如此)。如果您的應用程式會更復雜并且您必須存盤更多資料,您應該考慮使用其他存盤方式,例如sqlite。
因為我不知道 getX,這里是 sharedPreferences 的一個例子:
1.將包添加到pubspec.yaml:
dependencies:
shared_preferences: "<newest version>"
2.你的代碼與shared_preferences:
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
static const String _title = 'Flutter Code Sample';
@override
Widget build(BuildContext context) {
return MaterialApp(
title: _title,
home: Scaffold(
appBar: AppBar(title: const Text(_title)),
body: const MyStatefulWidget(),
),
);
}
}
class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({Key? key}) : super(key: key);
@override
State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
double _currentSliderValue = 20;
@override
void initState() {
super.initState();
_loadSlider();
}
//Loading slider value on start
void _loadSlider() async {
final prefs = await SharedPreferences.getInstance();
setState(() {
_currentSliderValue = (prefs.getDouble('slider') ?? 20);
});
}
// change slider value to value
void _changeSlider(double value) {
setState(() {
_currentSliderValue = value;
});
}
// store slider value
void _storeSlider() async {
final prefs = await SharedPreferences.getInstance();
prefs.setDouble('slider', _currentSliderValue);
}
@override
Widget build(BuildContext context) {
return Slider(
value: _currentSliderValue,
min: 0,
max: 100,
divisions: 5,
label: _currentSliderValue.round().toString(),
onChanged: (double value) {
_changeSlider(value);
_storeSlider();
},
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359640.html
