【问题标题】:FixedExtentScrollPhysics Flutter固定ExtentScrollPhysics 颤振
【发布时间】:2019-01-16 18:38:51
【问题描述】:

我想在我的代码中将我的获取响应 JSON 数据作为 FixedExtentScrollPhysics ViewList 无论我尝试了什么,都会出现一些错误 而我实际上所做的是 我有一个 FixedExtentScrollPhysics 代码和一个获取响应代码,我将它们混合在一起 但是出现了错误

我的代码是这样的

import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  MyAppState createState() => MyAppState();
}

class MyAppState extends State<MyApp> {
  final FixedExtentScrollController fixedExtentScrollController =
  new FixedExtentScrollController();

  List data;


  final String url = "https://jsonplaceholder.typicode.com/todos";

  Future<String> getTitle() async {
    var res = await http
        .get(Uri.encodeFull(url), headers: {"Accept": "application/json"});

    setState(() {
      var resBody = json.decode(res.body);
      data = resBody;
    });

    return "Success!";
  }

  @override

  Widget build(BuildContext context) {

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.deepPurple,
          title: const Text('List'),
        ),
        body:new Expanded(
          flex: 1,
          child:ListView.builder(
          controller: fixedExtentScrollController,
          physics: FixedExtentScrollPhysics(),
          itemCount: data == null ? 0 : data.length,
          itemBuilder: (BuildContext context, int index) {

            return new Container(
              child: Center(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: <Widget>[
                    Card(
                      child: Container(
                          padding: EdgeInsets.all(15.0),
                          child: Row(
                            children: <Widget>[
                              Text("Title: "),
                              Text(data[index]["title"],
                                  style: TextStyle(
                                      fontSize: 11.0, color: Colors.black87)),
                            ],
                          )),
                    ),
                  ],
                ),
              ),
            );
          },
        ),
      ),
    ),
    );
  }

  @override
  void initState() {
    super.initState();
    this.getTitle();
  }
}

有什么帮助吗?

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    检查错误日志:

     FixedExtentScrollController can only be used with ListWheelScrollViews
    

    所以FixedExtentScrollController不能和ListView一起使用,你需要使用ListWheelScrollViews

    这是你的代码修复:

         @override
          Widget build(BuildContext context) {
            return MaterialApp(
              home: Scaffold(
                appBar: AppBar(
                  backgroundColor: Colors.deepPurple,
                  title: const Text('List'),
                ),
                body: data == null
                    ? Center(
                        child: CircularProgressIndicator(),
                      )
                    : ListWheelScrollView(
                        itemExtent: 100.0,
                        controller: fixedExtentScrollController,
                        children: data
                            .map((val) => Container(
                                  child: Center(
                                    child: Column(
                                      crossAxisAlignment: CrossAxisAlignment.stretch,
                                      children: <Widget>[
                                        Card(
                                          child: Container(
                                              padding: EdgeInsets.all(15.0),
                                              child: Row(
                                                children: <Widget>[
                                                  Text("Title: "),
                                                  Expanded(
                                                    child: Text(val["title"],
                                                        style: TextStyle(
                                                            fontSize: 11.0,
                                                            color: Colors.black87)),
                                                  ),
                                                ],
                                              )),
                                        ),
                                      ],
                                    ),
                                  ),
                                ))
                            .toList()),
              ),
            );
          }
    

    【讨论】:

      猜你喜欢
      • 2018-09-09
      • 1970-01-01
      • 2021-10-17
      • 2022-10-09
      • 1970-01-01
      • 2020-12-18
      • 2020-03-30
      • 1970-01-01
      • 2020-10-13
      相关资源
      最近更新 更多