在文本小部件中放置设备模型

时间:2019-06-04 21:00:13

标签: flutter dart future

我需要在“文本”小部件中打印设备的模型。

我尝试使用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)无效,因此我不知道如何提取设备模型。

1 个答案:

答案 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;
  },
)