Это естественное поведение, потому что до завершения future требуется некоторое время, поэтому сначала это False
, а когда будущее завершается, оно становится True
/ False
(данные сохраняются в ваших предпочтениях).
Вы можете показать пользователю, что данные извлекаются следующим образом:
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(Home());
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
Future<bool> checkLogin() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return (prefs.getBool('ifLogged') ?? false);
}
@override
Widget build(BuildContext context) {
return FutureBuilder<bool>(
future: checkLogin(),
builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
if (snapshot.hasData)
return Center(
child: TextFormField(
enabled: snapshot.data,
),
);
return Center(child: CircularProgressIndicator());
},
);
}
}