GVKun编程网logo

dart – Flutter:获取HTML页面的某些元素(flutter获取当前context)

9

对于dart–Flutter:获取HTML页面的某些元素感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍flutter获取当前context,并为您提供关于asp.net-mvc–使用cshtm

对于dart – Flutter:获取HTML页面的某些元素感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍flutter获取当前context,并为您提供关于asp.net-mvc – 使用cshtml页面的angularjs不是带有web api 2的html页面、dart – Flutter Error:当前的Flutter SDK版本是2.1.0-dev.0.0.flutter-be6309690f、dart – Flutter:http post上传图片、dart – Flutter:如何检测键盘输入?的有用信息。

本文目录一览:

dart – Flutter:获取HTML页面的某些元素(flutter获取当前context)

dart – Flutter:获取HTML页面的某些元素(flutter获取当前context)

我最近开始使用dart& amp;开发一个动物收容所应用程序.扑了一下,碰到了问题.

这个想法是有一个捐赠页面,用户可以选择为狗狗购买食物.开放式脚手架将显示食物的图片,并从销售所述食物的网站和当前价格中获取一些数据.图像作为资产存储在本地,但我想从网站上获取至少价格,因此它始终是最新的.

我按照Flutter.io上的教程,但问题是http.get返回网站的整个代码,而不仅仅是我指定的部分(description_tab).我试过检查异步和放大器dart:转换文档,但到目前为止,我还没有找到任何可以帮助从HTML网站抓取特定内容的东西,使用div标签.

完整代码可在此处找到:https://github.com/kergefarkas/osszefogasaszanhuzokert

这就是我能够获取网站的整个HTML代码的方式:

Future<JoseraAdultActive> fetchPost() async {
  final response = await http.get(
      'https://www.petissimo.hu/kutyaknak/szarazeledelek/josera/josera-active.html');
  final json = JSON.decode(response.body);

  return new JoseraAdultActive.fromJson(json);
}

class JoseraAdultActive {
  final String description;
  final String price;

  JoseraAdultActive({this.description,this.price});

  factory JoseraAdultActive.fromJson(Map<String,dynamic> json) {
    return new JoseraAdultActive(
        description: json['description_tab'],price: json['product_price_from']);
  }
}

这是我显示提取信息的地方:

new Container(
                    padding: const EdgeInsets.only(top: 10.0,right: 5.0),child: new FutureBuilder<JoseraAdultActive>(
                        future: fetchPost(),builder: (context,snapshot) {
                          if (snapshot.hasData) {

                            return new Text('');
                          } else if (snapshot.hasError) {
                            return new Text('Error');
                          }
                          return new CircularProgressIndicator();
                        })),

我还认为JSON.decode不能用于HTML代码,但找不到任何可以使用的东西.试图通过子串切片它也不起作用.

在此先感谢您的帮助!

解决方法

在进一步推动Seth的评论时,您应该能够使用html库.

这应该是这样的:

import 'package:html/parser.dart' show parse;
import 'package:html/dom.dart';

var document = parse(response.body);
var priceElement = document.getElementsByClassName("product_price_from");
// priceElement may have weird formatting (I see &nbsp;) so you might need to do some parsing
// here to solve that

我还建议学习正则表达式(RegEx),因为它们可以用来解决这个问题,并且对各种编程问题都很有用.这是a link to dart’s regex documentation和一般RegEx tutorial.

话虽如此,此代码将取决于URL更改,网站更改或关闭,特定产品不再销售,并将使用用户的数据,以及可能或可能不在您控制之下的许多其他因素 – 所以我对将其放入生产代码有点怀疑,即使它只是用于避难所的应用程序.至少确保它有一个安全的后备(即回落到11500英尺的当前价格).

如果/当价格发生变化时,我会仔细考虑这是否真的有必要,而不是每年自己更新一次.或者,如果您的应用程序有服务器后端(甚至可以访问避难所的网站 – 您可以将页面放在shelter.com/donationprices/joseraadultactive,只返回“11499”),我建议将其作为参数应用程序可以检索您可以更新(如果您绝对希望它自动完成,请在服务器上运行一次任务,以检索最新价格).此外,我不知道庇护所在哪里工作,但在我居住的地方,他们倾向于大批量购买食物或者当它在售时,所以一袋食物的价格有点无关紧要 – 此时你可能还有一个捐赠按钮,带有一个袋子的图片和任意价格,因为你可能会得到尽可能多的捐款,还有比应用程序有问题的更多.

asp.net-mvc – 使用cshtml页面的angularjs不是带有web api 2的html页面

asp.net-mvc – 使用cshtml页面的angularjs不是带有web api 2的html页面

我有asp. net mvc4项目. Angularjs是整合的.
我已经按照以前的要求构建了HTML页面和WEB API 2.

现在由于某种原因,我必须使用CSHTML页面.以前我只有web api项目模板所以我不能用cshtml页面,因为只有MVC控制器可以返回部分页面(cshtml),但我只使用web apis …

所以改变了整个项目模板,所以现在我可以拥有mvc控制器……

总之,目前我已经建立了web apis和html页面的mvc4项目…..

我只是想使用CSHTML页面而不是使用HTML页面休息的东西应该是它们……

可能吗?

我可能听起来很傻但现在需要它.帮助将不胜感激……

仅限Web apis,cshtml页面和angularjs.不是web apis,html pages和angularjs.

如果我用cshtml替换html页面,角度路由会受到什么影响?

解决方法

嗯,这就是我使用它的方式.

有像这样的index.cshtml

@using System.Web.Optimization
@inherits System.Web.Mvc.WebViewPage
@{ Layout = null; }<!DOCTYPE html>
<html data-ng-app="MyProject">
<head>
    <title data-ng-controller="TitleCtrl" data-ng-bind="Title">My Project</title>
    <Meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <Meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <Meta http-equiv="cache-control" content="max-age=0" />
    <Meta http-equiv="cache-control" content="no-cache" />
    <Meta http-equiv="expires" content="0" />
    <Meta http-equiv="expires" content="Tue,01 Jan 1980 1:00:00 GMT" />
    <Meta http-equiv="pragma" content="no-cache" />

    @Styles.Render("~/Content/min/css")
</head>
<bodyid="body">

    <divdata-ui-view="body"></div>

    @Scripts.Render("~/js/angular")
    @Scripts.Render("~/js/MyProject")
</body>
</html>

注意:使用角度UI-Router,这就是ui-view所在的原因

但仍然必须有HomeController:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        // below I do some tricks to make app running on 
        // http://mydomain/app as well as on
        // http://mydomain/app/  (see the / at the end)

        var root = VirtualPathUtility.ToAbsolute("~/");
        var applicationPath = Request.ApplicationPath;
        var path = Request.Path;
        var hasTraillingSlash = root.Equals(applicationPath,StringComparison.InvariantCultureIgnoreCase)
                || !applicationPath.Equals(path,StringComparison.InvariantCultureIgnoreCase);
        if (!hasTraillingSlash)
        {
            return Redirect(root + "#");
        }

        // my view is not in Views,but in the root of a web project
        return View("~/Index.cshtml");
    }
}

所以,这样我可以使用Bundle配置(javascript,css)的功能……同时在http:// mydomain / app或http:// mydomain / app /启动角度.检查类似here

同样在global.asax中,我们应该配置ASP.NET MVC:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("fonts*.woff");

    routes.MapRoute(
      name: "Default",url: "{controller}/{action}/{id}",defaults: new {controller = "Home",action = "Index",id =UrlParameter.Optional}
    );
}

而web API应该是:

const string IdPattern = @"\d+|[A-Za-z]{1,2}";
public static void SetRouting(HttpConfiguration config)
{
    // some custom routes
    ...            

    // and a default one
    config.Routes.MapHttpRoute(
        name: "DefaultApi",routeTemplate: "api/{controller}/{id}",constraints: new { id = IdPattern },defaults: new { id = RouteParameter.Optional }
    );

dart – Flutter Error:当前的Flutter SDK版本是2.1.0-dev.0.0.flutter-be6309690f

dart – Flutter Error:当前的Flutter SDK版本是2.1.0-dev.0.0.flutter-be6309690f

我刚刚升级了我的扑动,升级后我无法在 Android Studio上运行任何扑动项目.我收到此错误消息.

The current Dart SDK version is 2.1.0-dev.0.0.Flutter-be6309690f.

Because buddy depends on Flutter_built_redux 0.4.5 which requires SDK 
version >=1.19.0 <2.0.0,version solving Failed.                                                  
pub get Failed (1)

如何降级Dart或如何解决此问题,我在mac上运行android studio.

我试过通过改变颤动的通道开发和主人,但它并没有什么区别.

扑医生-v结果:

[✓] Flutter (Channel dev,v0.6.0,on Mac OS X 10.13.4 17E202,locale en-IN)
• Flutter version 0.6.0 at /Users/pro/Downloads/Flutter
• Framework revision 9299c02cf7 (5 days ago),2018-08-16 00:35:12 +0200
• Engine revision e3687f70c7
• Dart version 2.1.0-dev.0.0.Flutter-be6309690f

[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
  • Android SDK at /Users/pro/Library/Android/sdk
  • Android NDK location not configured (optional; useful for native 
     profiling support)
  • Platform android-27,build-tools 27.0.3
  • Java binary at: /Applications/Android 
     Studio.app/Contents/jre/jdk/Contents/Home/bin/java
  • Java version OpenJDK Runtime Environment (build 1.8.0_152-release- 
     1024-b01)
• All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 9.4.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.4.1,Build version 9F2000
• ios-deploy 1.9.2
• CocoaPods version 1.5.0

[✓] Android Studio (version 3.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 27.1.1
• Dart plugin version 173.4700
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)

[!] Connected devices
! No devices available

解决方法

Flutter_built_redux包没有满足Flutter依赖.
错误是由包而不是Flutter sdk引起​​的.

看这里
https://github.com/davidmarne/flutter_built_redux/blob/master/pubspec.yaml#L22

您可以使用此链接在Flutter_built_redux包上发布问题
https://github.com/davidmarne/flutter_built_redux/issues/new?title=support%20for%20flutter%20sdk%202.1.0.dev&body=please%20upgrade%20the%20package%20for%20new%20flutter%20releases

dart – Flutter:http post上传图片

dart – Flutter:http post上传图片

我使用Web服务进行图像处理,它在Postman中运行良好:

postman screenshot

现在我想用Dart扑灭http请求:

import 'package:http/http.dart' as http;

static ocr(File image) async {
    var url = '${API_URL}ocr';
    var bytes = image.readAsBytesSync();

    var response = await http.post(
        url,headers:{ "Content-Type":"multipart/form-data" },body: { "lang":"fas","image":bytes},encoding: Encoding.getByName("utf-8")
    );

    return response.body;

  }

但是我不知道如何上传图像文件,在上面的代码中我得到异常:错误状态:无法使用内容类型“multipart / form-data”设置Request的正文字段.
我该如何撰写请求正文?

解决方法

你的解决方法应该有效;许多服务器将接受application / x-www-form-urlencoded作为替代方案(尽管数据编码效率适中).

但是,可以使用dart:http来执行此操作.而不是使用http.post,您将需要使用http.multipartfile对象.

从dart documentation:

var request = new http.MultipartRequest("POST",url);
request.fields['user'] = 'someone@somewhere.com';
request.files.add(http.multipartfile.fromPath(
    'package','build/package.tar.gz',contentType: new MediaType('application','x-tar'),));
request.send().then((response) {
  if (response.statusCode == 200) print("Uploaded!");
});

dart – Flutter:如何检测键盘输入?

dart – Flutter:如何检测键盘输入?

TextEditingController.addListener()在文本更改时注册回调.这似乎也可以通过按Enter键,打开/关闭键盘(更改焦点)来触发.

我如何注册它是被按下的输入,所以我可以,例如,调用API?

我实现这一目标的当前方式是通过监听FocusNode来检测焦点变化.按Enter键时焦点从FocusNode中移除,键盘关闭.这是正确的方法吗?

解决方法

有一个 onSubmitted属性接受ValueChanged回调.一旦用户在编辑后按完成,就会触发onSubmitted.

希望有所帮助!

关于dart – Flutter:获取HTML页面的某些元素flutter获取当前context的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于asp.net-mvc – 使用cshtml页面的angularjs不是带有web api 2的html页面、dart – Flutter Error:当前的Flutter SDK版本是2.1.0-dev.0.0.flutter-be6309690f、dart – Flutter:http post上传图片、dart – Flutter:如何检测键盘输入?等相关知识的信息别忘了在本站进行查找喔。

本文标签: