我需要在“文本”小部件中打印设备的模型。
我尝试使用FutureBuilder小部件来获取设备模型。
import 'package:flutter/material.dart';
import 'package:device_info/device_info.dart';
class DeviceInfoPage extends StatelessWidget {
String s;
Future _getModel() async{
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
return androidInfo.model;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
FutureBuilder(
future: _getModel(),
builder: (BuildContext context, AsyncSnapshot snap) {
if(snap.hasData) {}
else {}
}
),
],
),
);
}
}
我正在尝试从androidInfo.model
方法中获取_getModel
字符串。我知道返回类型是Future,所以我尝试使用Future生成器来获取值。但是现在我很茫然。尝试_getModel().then(value)
无效,因此我不知道如何提取设备模型。
答案 0 :(得分:0)
来自snap参数。我想您可以执行以下操作:
FutureBuilder(
future: _getModel(),
builder: (BuildContext context, AsyncSnapshot<String> snap) {
if(snap.hasData) {
Text('Model: ${snap.data}')
} else {
Text('Awaiting model...')
}
}
),
建议检查连接状态。检查docs example以获得更多信息,并可能重构为类似的内容:
FutureBuilder<String>(
future: _getModel(),
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.active:
case ConnectionState.waiting:
return Text('Awaiting result...');
case ConnectionState.done:
if (snapshot.hasError)
return Text('Error: ${snapshot.error}');
return Text('Result: ${snapshot.data}');
}
return null;
},
)