对于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)
- 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)
这个想法是有一个捐赠页面,用户可以选择为狗狗购买食物.开放式脚手架将显示食物的图片,并从销售所述食物的网站和当前价格中获取一些数据.图像作为资产存储在本地,但我想从网站上获取至少价格,因此它始终是最新的.
我按照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代码,但找不到任何可以使用的东西.试图通过子串切片它也不起作用.
在此先感谢您的帮助!
解决方法
这应该是这样的:
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 ) 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页面
我已经按照以前的要求构建了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
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 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扑灭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的正文字段.
我该如何撰写请求正文?
解决方法
但是,可以使用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:如何检测键盘输入?
我如何注册它是被按下的输入,所以我可以,例如,调用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:如何检测键盘输入?等相关知识的信息别忘了在本站进行查找喔。
本文标签: