【问题标题】:How to pass Future<void> _name(String _string) to a widget in Flutter?如何将 Future<void> _name(String _string) 传递给 Flutter 中的小部件?
【发布时间】:2020-03-21 18:23:12
【问题描述】:

这是我班级的代码...

class List extends StatefulWidget {
@override
_ListState createState() => _ListState();
}

class _ListState extends State<List> {
  Future<void> _makePhoneCall(String url) async {
   if (await canLaunch(url)) {
    await launch(url);
    } else {
      throw 'Could not launch $url';
    }
}

@override
Widget build(BuildContext context) {
return Scaffold(
    appBar: customAppbar('Contact Us'),
    body: ListView(children: <Widget>[
      _listTile('1234-1234567-123', 'Exam Enquiry', Icons.call,
          _makePhoneCall('tel:12345'))
    ]));
}
}

我想将 _makePhoneCall 函数传递给 Widget _listTile 但出现错误:

参数类型“Future”不能分配给参数类型“Future Function(String)”

_listTile 小部件的代码如下:

Widget _listTile(String title, String subTitle, IconData iconData,
Future<void> _makePhoneCall(String url)) {
return Padding(
padding: EdgeInsets.only(left: 24.0),
child: ListTile(
  title: Text(title),
  subtitle: Text(subTitle),
  trailing: Padding(
    padding: const EdgeInsets.all(0.0),
    child: RawMaterialButton(
      onPressed: () => _makePhoneCall,
      child: Icon(
        iconData,
        color: Colors.white,
      ),
      elevation: 2,
      shape: CircleBorder(),
      fillColor: Color(0xff7061aa),
    ),
  ),
),
);

}

【问题讨论】:

    标签: flutter flutter-layout flutter-dependencies flutter-test


    【解决方案1】:

    以下是必要的更改:

        body: ListView(children: <Widget>[
          _listTile('1234-1234567-123', 'Exam Enquiry', Icons.call,
              _makePhoneCall)
        ]));
    
        child: RawMaterialButton(
          onPressed: () => _makePhoneCall('tel:12345'),
    

    【讨论】:

    • 但我想在运行时传递 'tel:1234'。因为我有多个数字,并且每次都只想将数字传递给 _listTile 小部件。
    • 好吧,你要把它作为一个单独的参数发送。您不能同时发送函数及其参数,就好像它是一个参数一样。
    • 那么我可以使用 VoidCallBack() 吗??
    猜你喜欢
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2020-07-30
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多