[英]Multiprovider Flutter
嗨,我正在嘗試讓 multiproviders 在我的應用程序中工作,我希望能夠在所有子小部件之間共享一組數據。 在這種情況下,我正在讀取文件系統上的文件以加載一組數據(設置)。
FileService.readSettings
static Future<Settings> readSettings() async
{
try {
final directory = await getApplicationDocumentsDirectory();
final file = File('${directory.path}/settings.txt');
String loadedstring = await file.readAsString();
Settings settings = (jsonDecode(loadedstring) as Settings);
return settings;
} catch (e) {
print("Couldn't read file");
}
}
_getSetting main.dart 文件
Future<Settings> _getSettings(BuildContext context) async
{
Settings settings = await FileService.readSettings();
return settings;
}
我在 main.dart 中的 Build 方法片段
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => UserData(),
child: MultiProvider(
providers: [
ChangeNotifierProvider<Settings>(
create: (context) => _getSettings(context)
),
],
我沒有正確地編寫 create 方法。 我越來越 :
錯誤:無法將“未來”類型的值分配給“設置”類型的變量。
我不確定如何等待它加載。
您可以使用FutureBuilder
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _getSettings(context),
builder: (context, snapshot) {
return ChangeNotifierProvider(
create: (context) => UserData(),
child: MultiProvider(
providers: [
ChangeNotifierProvider<Settings>(
create: (context) => snapshot.data
),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.