我在使用 Flutter web 并将图像上传到 Firestore 时遇到问题。我很确定问题出在图像选择器中,因为普通(移动)图像选择器不适用于网络。普通图像选择器返回一个文件,但替代image_picker_web返回一个图像,该图像在上传时被拒绝,因为它需要一个Future<File>.
image_picker_web有一种替代方法可以返回Uint8List我使用过的 a,然后转换为Filevia dart:html- 并正常上传,但图像已损坏且无法查看。
这是我所做的:
按下按钮 - 选择图像Uint8List> 转换为Image,存储在内存中并在屏幕上显示
onPressed: () async {
//Upload Image as Uint8List
imageBytes = await ImagePickerWeb.getImage(asUint8List: true);
//Convert Uint8List to Image
_image = Image.memory(imageBytes);
//Show new image on screen
setBottomSheetState(() {
image = _image;
});
},
Run Code Online (Sandbox Code Playgroud)
转换Uint8List为Fileusingdart:html File和 name as users UID.png (PNG Uploaded)
imageFile = html.File(imageBytes, …Run Code Online (Sandbox Code Playgroud) 我浏览过互联网,但没有找到任何东西,而且我肯定不是唯一想要使用PagulatedDataTable和 Firebase 的人。
我有一个非常简单的表要创建:
带列表的页面
class CentreViewEnquiriesList extends StatefulWidget {
final CentreData centreData;
CentreViewEnquiriesList({this.centreData});
@override
_CentreViewEnquiriesList createState() => _CentreViewEnquiriesList();
}
class _CentreViewEnquiriesList extends State<CentreViewEnquiriesList> {
int _rowsPerPage = PaginatedDataTable.defaultRowsPerPage;
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: Container(
padding: EdgeInsets.all(20),
child: PaginatedDataTable(
header: Text('Enquiries'),
columns: [
DataColumn(label: Text('Enquiry Date')),
DataColumn(label: Text('Enquiry Person')),
DataColumn(label: Text('Enquiry Status')),
],
source: EnquiryDataSource(widget.centreData),
onRowsPerPageChanged: (r) {
setState(() {
_rowsPerPage = r;
});
},
rowsPerPage: _rowsPerPage,
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
数据表源
class EnquiryDataSource …Run Code Online (Sandbox Code Playgroud) 我正在创建一个管理仪表板,我目前有两个连续的视图小部件:
这是页面的代码:
import 'package:flutter/material.dart';
import 'package:webenrol/widgets/dashboard_admin.dart';
import 'package:webenrol/widgets/drawer.dart';
//TODO: add flappy_search_bar package and add to appBar
class AdminDashboard extends StatelessWidget {
//TODO: Add title
static String id = '/admin_dashboard';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Admin Dashboard - Overview'),),
body: Container(child: Row(
children: <Widget>[
//Sidebar
DashboardSideBar(),
//Main Dashboard Content
DashboardAdmin(),
],
)),
);
}
}
Run Code Online (Sandbox Code Playgroud)
我将为侧边栏中的链接创建其他内容小部件,我最希望的是,将内容小部件更新为在菜单上单击的内容,并且还将 ListTile 选择为活动状态,而无需重新加载页面。
这可能吗,我的 WebApp 是否为此正确布局,还是我需要更改它?
flutter flutter-layout flutter-navigation flutter-listview flutter-web