我有一个返回图像目录路径的函数,它执行一些额外的检查,比如目录是否存在,然后它会相应地运行。
这是我的代码:
Future<String> getImagesPath() async {
final Directory appDir = await getApplicationDocumentsDirectory();
final String appDirPath = appDir.path;
final String imgPath = appDirPath + '/data/images';
final imgDir = new Directory(imgPath);
bool dirExists = await imgDir.exists();
if (!dirExists) {
await new Directory(imgPath).create(recursive: true);
}
return imgPath;
}
Run Code Online (Sandbox Code Playgroud)
这段代码按预期工作,但我在从Future.
案例场景:
我将数据存储在本地数据库中并尝试在列表视图中显示它。我正在使用FutureBuilder,如本答案中所述。每个数据行都有一个与之相连的图像(连接意味着,图像名称存储在db中)。
内部Widget build方法,我有这个代码:
@override
Widget build(BuildContext context) {
getImagesPath().then((path){
imagesPath = path;
print(imagesPath); //prints correct path
});
print(imagesPath); //prints null
return Scaffold(
//removed
body: FutureBuilder<List>( …Run Code Online (Sandbox Code Playgroud) 我正在努力为Android应用程序布局.我为不同的屏幕尺寸定义了不同的布局,当前的布局目录结构是这样的:
问题
正在显示的主布局目录文件的3.7 to 7.0范围非常广泛.并且文字在小屏幕上重叠,如果我调整小; 它在大屏幕上变得非常小.
根据我的说法,应该为较小的屏幕呈现布局小文件,但这些文件仅针对Android穿戴设备呈现.
layout-xlarge似乎适用于 Nexus 9 to Nexus 10
我想知道,如何定义不同的布局3.7-5.0和5.0-7.0屏幕尺寸.
我有cities表并试图在创建数据库时插入城市。表结构非常简单,只有id和name列。
在onCreate我的数据库类的方法中,我使用以下命令创建表:
var tblCities = 'cities';
await db.execute('CREATE TABLE $tblCities (id INTEGER PRIMARY KEY, name TEXT)');
Run Code Online (Sandbox Code Playgroud)
我有Cities模型类fromMap和toMap方法。
大约有 350 个城市,我想将它们插入表格中。
问:最好且最简单的方法是什么?
这在我脑海中浮现:
for循环迭代整个列表toMap方法创建城市地图db.insert循环内调用方法我不确定,但这似乎是愚蠢的方法,所以考虑更好和优化的解决方案......
这就是我需要的:
桌面: B A
移动:
A
B
Run Code Online (Sandbox Code Playgroud)
这是我的HTML:
<div class="row">
<div class="col-md-7 col-sm-7 push-md-5">
A
</div>
<div class="col-md-5 col-sm-5 pull-md-7">
B
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
它在移动设备上的顺序正确,但在桌面上没有.我尝试了几个指南和帮助材料,但没有运气.在大多数指南中,它们移动的是相同的列,如4或6,所以清楚地理解它有点令人困惑.
在我的应用程序中,我想用相机拍摄图像,image_picker为此我使用了库。
这是我的代码:
import 'dart:io';
import 'package:image_picker/image_picker.dart';
Future<File> getImage() async {
var image = await ImagePicker.pickImage(source: ImageSource.camera);
return image;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但如果由于某种原因相机不可用,那么它会使应用程序崩溃。所以,我认为我们可以通过在内部使用它来避免这种情况try/catch(如果我错了,请纠正我)。
我添加了try/catch,这里是更新的代码:
try {
var image = await ImagePicker.pickImage(source: ImageSource.camera);
} catch (e) {
print(e);
}
return image;
Run Code Online (Sandbox Code Playgroud)
我的 IDE 抛出错误,变量image未定义。
问题:
try/catch在这种情况下我该如何正确使用?try/catch是这几样问题的方法?我正在开发一个 Web 应用程序并第一次编写基于纯 OOP 的 PHP。我有一个关于静态方法VS标准函数的问题:
这是一个示例场景:
class Session
{
public function start_new_session()
{
session_start();
//other code here like token generator
}
}
Run Code Online (Sandbox Code Playgroud)
VS
class Session
{
static function start_new_session()
{
session_start();
//other code here like token generator
}
}
Run Code Online (Sandbox Code Playgroud)
问题
我的研究:
我花了一些时间来寻找答案,但没有找到相关的答案,但是我发现了很多辩论和有用的材料。相信我,对于像我这样的初学者来说,很难决定(谁对谁错?):
在这个问题中有人说,在静态函数中使用 cookie 是一个可怕的想法,有人说这是一个好主意
而在这个问题:每个人都在讨论对性能和一些专家说,静态函数执行速度更快,有的说; 功能更快。并且结果也因php版本不同而有所不同。
一些有用的统计数据:
PHP 5.2:静态方法快了大约 10-15%。
PHP 5.3:非静态方法快了约 15%
PHP 5.4:静态方法快了约 10-15%
PHP 5.5:静态方法快了约 20%
我正在将 Woo Commerce 与 WC Vendor 和 WC Booking 插件一起使用。我想向供应商发送预订通知。目前它会向客户和管理员发送通知,当管理员将产品状态更改为正在处理和完成时,它会向供应商发送通知。但是,我想将供应商通知与管理员通知一起发送。
我试过这个钩子:
add_action( 'woocommerce_new_booking', 'new_order_email_to_vendor', 10, 4 );
function new_order_email_to_vendor( $order ){
$emails = WC()->mailer()->get_emails();
if ( ! empty( $emails ) ) {
$emails['WC_Product_Vendors_Order_Email_To_Vendor']->trigger( $order );
}
}
Run Code Online (Sandbox Code Playgroud)
但它抛出一个错误:
Fatal error: Call to a member function get_date_created() on boolean in /wp-content/plugins/woocommerce-product-vendors/includes/emails/class-wc-product-vendors-order-email-to-vendor.php on line 56
Run Code Online (Sandbox Code Playgroud)
所以,现在我试图在这一行中直接挂钩供应商电子邮件以及客户和管理员电子邮件:
$this->recipient = $this->get_option( 'recipient', get_option( 'admin_email' ), 'WILL ADD VENDOR EMAIL HERE' );
Run Code Online (Sandbox Code Playgroud)
在文件中:
wp-content/plugins/woocommerce-bookings/includes/emails/class-wc-email-new-booking.php
Run Code Online (Sandbox Code Playgroud)
在这个阶段,我有可预订的产品 ID,我正在尝试使用产品 ID 提取供应商信息,但我没有找到任何信息。
我 …
我想重写子主题中的函数,该函数在父主题的类中定义。
这是示例代码:
class A extends B{
function __construct(){
$this->add_ajax('sync_post_data', 'need_to_override');
}
//other functions
function need_to_override(){
//function code
}
}
Run Code Online (Sandbox Code Playgroud)
附加信息:
B类扩展了C类,C类是定义的根类add_ajax。
我尝试过的:
其次,我尝试删除 ajax 操作并添加我的自定义操作。它抛出 500 内部服务器错误。
remove_action( 'wp_ajax_sync_post_data', 'need_to_override' );
add_action( 'wp_ajax_sync_post_data', 'custom_function' );
function custom_function(){
//function code with my custom modification
}
Run Code Online (Sandbox Code Playgroud)有什么帮助请...
我正在我的应用程序中添加抽屉,并遵循官方指南。我想将 Drawer 分为三个部分:
抽屉头(顶部)
部分项目
设置(底部)
如果我ListView是其直接子代,Drawer则它可以正常工作,但我无法在底部添加“设置”部分。我发现了这个,它符合我的要求,但DrawerHeader不占用最大宽度。
这是我的代码:
Drawer(
elevation: 1.5,
child: Column(children: <Widget>[
DrawerHeader(
decoration: BoxDecoration(
color: Colors.redAccent,
)),
Expanded(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
//list tiles
],
)),
Container(
color: Colors.black,
width: double.infinity,
height: 0.1,
),
Container(
padding: EdgeInsets.all(10),
height: 100,
child: Text("V1.0.0",style: TextStyle(fontWeight: FontWeight.bold),)),
])),
Run Code Online (Sandbox Code Playgroud)
默认情况下,抽屉标题宽度不是最大的。它根据内容大小进行调整,如果我增加字体大小或在左侧和右侧添加填充,则需要更多的宽度。
检查下图以供参考:
flutter ×4
dart ×3
wordpress ×2
android ×1
async-await ×1
asynchronous ×1
bootstrap-4 ×1
bulkinsert ×1
drawerlayout ×1
future ×1
grid-layout ×1
imagepicker ×1
layout ×1
oop ×1
parent-child ×1
php ×1
sqflite ×1
try-catch ×1
woocommerce ×1