android - 在 Flutter 中从 JSON 创建动态小部件
问题描述
我正在尝试从从 API 获取的 JSON 创建动态小部件。我只是关注博客https://medium.com/@limonadev/rendering-flutter-widgets-from-json-easily-3db02490519e 但是在做了所有的事情之后我们得到了一些错误“/C:/Users/user/AppData /Local/Pub/Cache/hosted/pub.dartlang.org/json_dynamic_widget-1.4.1/lib/src/builders/json_scaffold_builder.dart:246:7:错误:没有名为“resizeToAvoidBottomPadding”的命名参数。” 我的 main.dart 文件是:
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:json_dynamic_widget/json_dynamic_widget.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Simple Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: DynamicText());
}
}
class DynamicText extends StatefulWidget {
final url = 'https://medium-json-dynamic-widget.herokuapp.com/mainpage';
@override
_DynamicTextState createState() => _DynamicTextState();
}
class _DynamicTextState extends State<DynamicText> {
@override
Widget build(BuildContext context) {
return FutureBuilder(
builder: (context, AsyncSnapshot<http.Response> snapshot) {
if (snapshot.hasData) {
var widgetJson = json.decode(snapshot.data.body);
var widget = JsonWidgetData.fromDynamic(
widgetJson,
);
return widget.build(context: context);
} else {
return Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
}
},
future: _getWidget(),
);
}
Future<http.Response> _getWidget() async {
return http.get(widget.url);
}
}
class SimpleText extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Static Widget'),
),
body: Center(
child: Text('This is a very important message!'),
),
);
}
}
并且 pubspec.yaml 文件是:
name: json_to_v
description: A new Flutter project.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
http: ^0.12.2
json_dynamic_widget: ^1.0.3
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
如果我将json_dynamic_widget: ^1.0.3 升级到 ^2.1.0 我们会收到以下错误:
因为 json_dynamic_widget >=2.0.0 <2.1.0 依赖于 json_schema2 ^2.0.0 而 json_schema2 >=2.0.0 <=2.0.0 依赖于 rest_client ^2.0.0,所以 json_dynamic_widget >=2.0.0 <2.1.0 需要 rest_client ^2.0.0 或 json_schema2 ^2.0.0+1。并且因为 json_dynamic_widget >=2.1.0 依赖于 json_schema2 ^2.0.0+1,json_dynamic_widget >=2.0.0 需要 rest_client ^2.0.0 或 json_schema2 ^2.0.0+1。并且因为 json_schema2 >=2.0.0+1 依赖于 rest_client ^2.0.1+1 依赖于 http ^0.13.0,所以 json_dynamic_widget >=2.0.0 需要 http ^0.13.0。所以,因为 json_to_v 依赖于 http ^0.12.2 和 json_dynamic_widget ^2.0.0,版本求解失败。pub get failed (1; 所以,因为 json_to_v 依赖于 http ^0.12.2 和 json_dynamic_widget ^2.0.0,版本解析失败。)
如果我们在该行和相关代码下方评论,那么错误就消失了。
import 'package:json_dynamic_widget/json_dynamic_widget.dart';
请让我知道我在哪里做错了。谢谢
解决方案
尝试将此添加到您的pubspec.yaml:
http: ^0.13.3
json_dynamic_widget: ^3.0.0
推荐阅读
- python - 如何使用 rcParams 重置 Matplotlib 样式表
- docker - 构建错误。无法获取 http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages
- scala - 我想在 Scala 中将 org.apache.spark.rdd.RDD[(Any, scala.collection.immutable.Iterable[String])] 展平为 String
- reactjs - 托管在 Firebase 上时,React 路由器不会路由流量
- java - 如何使用 Jsonb 库从 Postgres 读取 jsonb
- mpandroidchart - mpAndroidChart:Xaxis.setPosition 到 Bottom_Inside 在 HorizontalBarChart 上不起作用
- javascript - 使用 Next.js 动态导入节点模块
- java - 从文本文件中提取分离的代码并将其存储到数组中以供进一步使用
- python - 用不同的字符串结尾搜索相同的字符串开头
- python - 在 pythonista Objc_util 中使用 UINotificationFeedbackGenerator