【问题标题】:How to fill CupertinoActionSheet with JSON result in flutter如何用 JSON 填充 CupertinoActionSheet 导致颤动
【发布时间】:2020-07-26 21:28:29
【问题描述】:

我从 JSON 返回多条记录,需要用它们填充 CupertinoActionSheet。飞镖是如何完成的?例如:

 CupertinoActionSheetAction(
     child: Text('item1'),
     onPressed: () {
        //print('pressed');
    },
 },

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    如果我正确理解您的问题,您想要一种方法来生成与 JSON 中的记录一样多的 CupertinoActionSheetAction 小部件。

    代码示例:

    import 'package:flutter/material.dart';
    import 'package:flutter/cupertino.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          home: Scaffold(
            drawer: Drawer(child: ListView(children: [])),
            body: MyWidget(),
          ),
        );
      }
    }
    
    // JSON example
    final data = [
      {"item_id": "1", "name": "Item 1"},
      {"item_id": "2", "name": "Item 2"},
      {"item_id": "3", "name": "Item 3"}
    ];
    
    class MyWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return CupertinoActionSheet(actions: <Widget>[
          ...data.map((item) => CupertinoActionSheetAction(
              child: Text(item['name']),
              onPressed: () => print("Pressed ${item['item_id']}"))),
        ]);
      }
    }
    

    使用此代码将为映射data['items'] 中的每个条目生成一个CupertinoActionSheetAction。每次您点击其中一个项目时,它都会在控制台中打印其名称。

    结果

    【讨论】:

    • 使用这种 JSON 格式? ` [{"item_id":"1","name":"Item 1"},{"item_id":"2","name":"Item 2"},{"item_id":"3"," name":"项目 3"}]`
    猜你喜欢
    • 2020-04-28
    • 2019-07-03
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    相关资源
    最近更新 更多