首页 > 解决方案 > 如何用 JSON 填充 CupertinoActionSheet 导致颤动

问题描述

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

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

标签: flutterdart

解决方案


如果我正确理解您的要求,您需要一种方法来生成与CupertinoActionSheetActionJSON 中的记录一样多的小部件。

代码示例:

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']}"))),
    ]);
  }
}

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

结果

在此处输入图像描述


推荐阅读