🔨: Change server address

This commit is contained in:
老晨子
2020-12-26 20:56:49 +08:00
committed by xiaoli
parent 934b1d63f6
commit 6cb32f70d0
37 changed files with 52 additions and 70 deletions

1
.gitignore vendored
View File

@ -28,3 +28,4 @@ flutter_01.log
flutter_02.log flutter_02.log
.flutter-plugins-dependencies .flutter-plugins-dependencies
Flutter.podspec Flutter.podspec
android/android.iml

View File

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip

View File

@ -6,7 +6,7 @@ export 'package:dio/dio.dart';
class ApiStrategy { class ApiStrategy {
static ApiStrategy _instance; static ApiStrategy _instance;
static final String baseUrl = "http://111.230.251.115/oldchen/"; static final String baseUrl = "http://42.194.193.85/oldchen/";
// static final String baseUrl = "http://192.168.137.1:8080/"; // static final String baseUrl = "http://192.168.137.1:8080/";
static const int connectTimeOut = 10 * 1000; //连接超时时间为10秒 static const int connectTimeOut = 10 * 1000; //连接超时时间为10秒
static const int receiveTimeOut = 15 * 1000; //响应超时时间为15秒 static const int receiveTimeOut = 15 * 1000; //响应超时时间为15秒

View File

@ -1,13 +1,12 @@
import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:http/http.dart' as http;
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
//图片缓存管理类,目前没有用到 //图片缓存管理类,目前没有用到
class CustomCacheManager extends BaseCacheManager { class CustomCacheManager extends CacheManager {
static const key = "customCache"; static const key = "customCache";
static CustomCacheManager _instance; static CustomCacheManager _instance;
@ -19,18 +18,11 @@ class CustomCacheManager extends BaseCacheManager {
return _instance; return _instance;
} }
CustomCacheManager._() : super(key, CustomCacheManager._() : super(Config(key));
maxAgeCacheObject: Duration(hours: 12),
maxNrOfCacheObjects: 1,
fileFetcher: _customHttpGetter);
Future<String> getFilePath() async { Future<String> getFilePath() async {
var directory = await getTemporaryDirectory(); var directory = await getTemporaryDirectory();
return p.join(directory.path, key); return p.join(directory.path, key);
} }
static Future<FileFetcherResponse> _customHttpGetter(String url, {Map<String, String> headers}) async {
// Do things with headers, the url or whatever.
return HttpFileFetcherResponse(await http.get(url, headers: headers));
}
} }

View File

@ -1,5 +1,3 @@
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:todo_list/json/task_bean.dart'; import 'package:todo_list/json/task_bean.dart';

View File

@ -21,7 +21,7 @@ class CloudTaskBean {
} }
static List<CloudTaskBean> fromMapList(dynamic mapList) { static List<CloudTaskBean> fromMapList(dynamic mapList) {
List<CloudTaskBean> list = new List(mapList.length); List<CloudTaskBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -11,7 +11,7 @@ class CommonBean {
} }
static List<CommonBean> fromMapList(dynamic mapList) { static List<CommonBean> fromMapList(dynamic mapList) {
List<CommonBean> list = new List(mapList.length); List<CommonBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -20,7 +20,7 @@ class LoginBean{
} }
static List<LoginBean> fromMapList(dynamic mapList) { static List<LoginBean> fromMapList(dynamic mapList) {
List<LoginBean> list = new List(mapList.length); List<LoginBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -60,7 +60,7 @@ class PhotoBean {
} }
static List<PhotoBean> fromMapList(dynamic mapList) { static List<PhotoBean> fromMapList(dynamic mapList) {
List<PhotoBean> list = new List(mapList.length); List<PhotoBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -102,7 +102,7 @@ class LinksBean {
} }
static List<LinksBean> fromMapList(dynamic mapList) { static List<LinksBean> fromMapList(dynamic mapList) {
List<LinksBean> list = new List(mapList.length); List<LinksBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -149,7 +149,7 @@ class UrlsBean {
} }
static List<UrlsBean> fromMapList(dynamic mapList) { static List<UrlsBean> fromMapList(dynamic mapList) {
List<UrlsBean> list = new List(mapList.length); List<UrlsBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -225,7 +225,7 @@ class UserBean {
} }
static List<UserBean> fromMapList(dynamic mapList) { static List<UserBean> fromMapList(dynamic mapList) {
List<UserBean> list = new List(mapList.length); List<UserBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -254,7 +254,7 @@ class ProfileImageBean {
} }
static List<ProfileImageBean> fromMapList(dynamic mapList) { static List<ProfileImageBean> fromMapList(dynamic mapList) {
List<ProfileImageBean> list = new List(mapList.length); List<ProfileImageBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -16,7 +16,7 @@ class RegisterBean{
} }
static List<RegisterBean> fromMapList(dynamic mapList) { static List<RegisterBean> fromMapList(dynamic mapList) {
List<RegisterBean> list = new List(mapList.length); List<RegisterBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -19,7 +19,7 @@ class SuggestionBean {
} }
static List<SuggestionBean> fromMapList(dynamic mapList) { static List<SuggestionBean> fromMapList(dynamic mapList) {
List<SuggestionBean> list = new List(mapList.length); List<SuggestionBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -61,7 +61,7 @@ class SuggestionsListBean {
} }
static List<SuggestionsListBean> fromMapList(dynamic mapList) { static List<SuggestionsListBean> fromMapList(dynamic mapList) {
List<SuggestionsListBean> list = new List(mapList.length); List<SuggestionsListBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -134,7 +134,7 @@ class TaskBean {
} }
static List<TaskBean> fromMapList(dynamic mapList) { static List<TaskBean> fromMapList(dynamic mapList) {
List<TaskBean> list = new List(mapList.length); List<TaskBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -142,7 +142,7 @@ class TaskBean {
} }
static List<TaskBean> fromNetMapList(dynamic mapList) { static List<TaskBean> fromNetMapList(dynamic mapList) {
List<TaskBean> list = new List(mapList.length); List<TaskBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromNetMap(mapList[i]); list[i] = fromNetMap(mapList[i]);
} }
@ -214,7 +214,7 @@ class TaskDetailBean {
} }
static List<TaskDetailBean> fromMapList(dynamic mapList) { static List<TaskDetailBean> fromMapList(dynamic mapList) {
List<TaskDetailBean> list = new List(mapList.length); List<TaskDetailBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -20,7 +20,7 @@ class TaskIconBean {
} }
static List<TaskIconBean> fromMapList(dynamic mapList) { static List<TaskIconBean> fromMapList(dynamic mapList) {
List<TaskIconBean> list = new List(mapList.length); List<TaskIconBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -73,7 +73,7 @@ class IconBean {
} }
static List<IconBean> fromMapList(dynamic mapList) { static List<IconBean> fromMapList(dynamic mapList) {
List<IconBean> list = new List(mapList.length); List<IconBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -25,7 +25,7 @@ class UpdateInfoBean {
} }
static List<UpdateInfoBean> fromMapList(dynamic mapList) { static List<UpdateInfoBean> fromMapList(dynamic mapList) {
List<UpdateInfoBean> list = new List(mapList.length); List<UpdateInfoBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -19,7 +19,7 @@ class UploadAvatarBean {
} }
static List<UploadAvatarBean> fromMapList(dynamic mapList) { static List<UploadAvatarBean> fromMapList(dynamic mapList) {
List<UploadAvatarBean> list = new List(mapList.length); List<UploadAvatarBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -19,7 +19,7 @@ class UploadTaskBean {
} }
static List<UploadTaskBean> fromMapList(dynamic mapList) { static List<UploadTaskBean> fromMapList(dynamic mapList) {
List<UploadTaskBean> list = new List(mapList.length); List<UploadTaskBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -13,7 +13,7 @@ class WeatherBean {
} }
static List<WeatherBean> fromMapList(dynamic mapList) { static List<WeatherBean> fromMapList(dynamic mapList) {
List<WeatherBean> list = new List(mapList.length); List<WeatherBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -46,7 +46,7 @@ class HeWeather6ListBean {
} }
static List<HeWeather6ListBean> fromMapList(dynamic mapList) { static List<HeWeather6ListBean> fromMapList(dynamic mapList) {
List<HeWeather6ListBean> list = new List(mapList.length); List<HeWeather6ListBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -90,7 +90,7 @@ class BasicBean {
} }
static List<BasicBean> fromMapList(dynamic mapList) { static List<BasicBean> fromMapList(dynamic mapList) {
List<BasicBean> list = new List(mapList.length); List<BasicBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -149,7 +149,7 @@ class NowBean {
} }
static List<NowBean> fromMapList(dynamic mapList) { static List<NowBean> fromMapList(dynamic mapList) {
List<NowBean> list = new List(mapList.length); List<NowBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }
@ -175,7 +175,7 @@ class UpdateBean {
} }
static List<UpdateBean> fromMapList(dynamic mapList) { static List<UpdateBean> fromMapList(dynamic mapList) {
List<UpdateBean> list = new List(mapList.length); List<UpdateBean> list = List.filled(mapList.length, null);
for (int i = 0; i < mapList.length; i++) { for (int i = 0; i < mapList.length; i++) {
list[i] = fromMap(mapList[i]); list[i] = fromMap(mapList[i]);
} }

View File

@ -46,7 +46,7 @@ class AvatarPageLogic {
Future getImage() async { Future getImage() async {
final context = _model.context; final context = _model.context;
File image = await ImagePicker.pickImage(source: ImageSource.gallery); PickedFile image = await ImagePicker().getImage(source: ImageSource.gallery);
if (image != null) { if (image != null) {
if (Platform.isAndroid) { if (Platform.isAndroid) {
PermissionReqUtil.getInstance().requestPermission( PermissionReqUtil.getInstance().requestPermission(
@ -64,7 +64,7 @@ class AvatarPageLogic {
} }
} }
void _saveAndGetAvatarFile(File file) async { void _saveAndGetAvatarFile(PickedFile file) async {
_model.currentAvatarType = CurrentAvatarType.local; _model.currentAvatarType = CurrentAvatarType.local;
_model.currentAvatarUrl = file.path; _model.currentAvatarUrl = file.path;
_model.refresh(); _model.refresh();

View File

@ -1,5 +1,3 @@
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:todo_list/config/api_service.dart'; import 'package:todo_list/config/api_service.dart';
@ -72,10 +70,10 @@ class FeedbackPageLogic {
final userName = await SharedUtil.instance.getString(Keys.currentUserName) ?? IntlLocalizations.of(context).noName; final userName = await SharedUtil.instance.getString(Keys.currentUserName) ?? IntlLocalizations.of(context).noName;
final suggestion = _model.feedbackContent; final suggestion = _model.feedbackContent;
final avatarPath = await SharedUtil.instance.getString(Keys.localAvatarPath) ?? ""; final avatarPath = await SharedUtil.instance.getString(Keys.localAvatarPath) ?? "";
String fileName = avatarPath // String fileName = avatarPath
.substring(avatarPath.lastIndexOf("/") + 1, avatarPath.length) // .substring(avatarPath.lastIndexOf("/") + 1, avatarPath.length)
.replaceAll(" ", ""); // .replaceAll(" ", "");
String transFormName = Uri.encodeFull(fileName).replaceAll("%", ""); // String transFormName = Uri.encodeFull(fileName).replaceAll("%", "");
///由于写后端的时候忘记添加表情的字段,现在把它放这里面 ///由于写后端的时候忘记添加表情的字段,现在把它放这里面
final connectWay = "${(_model.contactWay ?? "") + "<emoji>${_model.currentSelectSvg + 1}<emoji>"}"; final connectWay = "${(_model.contactWay ?? "") + "<emoji>${_model.currentSelectSvg + 1}<emoji>"}";
final account = await SharedUtil.instance.getString(Keys.account) ?? "default"; final account = await SharedUtil.instance.getString(Keys.account) ?? "default";
@ -93,7 +91,6 @@ class FeedbackPageLogic {
"suggestion": suggestion, "suggestion": suggestion,
"connectWay": connectWay, "connectWay": connectWay,
"userName": userName, "userName": userName,
"userName": userName,
}), }),
success: (bean){ success: (bean){
SharedUtil.instance.saveString(Keys.lastSuggestTime, DateTime.now().toIso8601String()); SharedUtil.instance.saveString(Keys.lastSuggestTime, DateTime.now().toIso8601String());

View File

@ -1,5 +1,3 @@
import 'dart:math';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:todo_list/config/all_types.dart'; import 'package:todo_list/config/all_types.dart';
import 'package:todo_list/json/theme_bean.dart'; import 'package:todo_list/json/theme_bean.dart';

View File

@ -41,7 +41,6 @@ class LoginPageModel extends ChangeNotifier{
emailController.dispose(); emailController.dispose();
passwordController.dispose(); passwordController.dispose();
cancelToken?.cancel(); cancelToken?.cancel();
formKey?.currentState?.dispose();
super.dispose(); super.dispose();
debugPrint("LoginPageModel销毁了"); debugPrint("LoginPageModel销毁了");
} }

View File

@ -55,7 +55,7 @@ class EditTaskPage extends StatelessWidget {
title: Container( title: Container(
height: 49, height: 49,
child: Form( child: Form(
autovalidate: true, autovalidateMode: AutovalidateMode.always,
child: TextFormField( child: TextFormField(
style: TextStyle(color: textColor,textBaseline: TextBaseline.alphabetic), style: TextStyle(color: textColor,textBaseline: TextBaseline.alphabetic),
textAlign: TextAlign.center, textAlign: TextAlign.center,

View File

@ -10,7 +10,6 @@ import 'package:todo_list/widgets/custom_cache_provider.dart';
import 'package:todo_list/widgets/popmenu_botton.dart'; import 'package:todo_list/widgets/popmenu_botton.dart';
import 'package:todo_list/widgets/task_info_widget.dart'; import 'package:todo_list/widgets/task_info_widget.dart';
import 'package:todo_list/model/task_detail_page_model.dart'; import 'package:todo_list/model/task_detail_page_model.dart';
import 'package:cached_network_image/cached_network_image.dart';
class TaskDetailPage extends StatelessWidget { class TaskDetailPage extends StatelessWidget {
@override @override

View File

@ -1,4 +1,3 @@
import 'dart:io';
import 'dart:ui'; import 'dart:ui';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';

View File

@ -93,7 +93,7 @@ class FeedbackPage extends StatelessWidget {
), ),
), ),
child: Form( child: Form(
autovalidate: true, autovalidateMode: AutovalidateMode.always,
child: TextFormField( child: TextFormField(
expands: true, expands: true,
maxLines: null, maxLines: null,

View File

@ -1,5 +1,3 @@
import 'dart:io';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';

View File

@ -63,7 +63,7 @@ class ThemeUtil {
color: bgColor, color: bgColor,
elevation: 0.0, elevation: 0.0,
textTheme: TextTheme( textTheme: TextTheme(
title: TextStyle(color: iconColor, fontSize: 20), subtitle1: TextStyle(color: iconColor, fontSize: 20),
), ),
); );
} }

View File

@ -55,7 +55,7 @@ class _CustomIconWidgetState extends State<CustomIconWidget> {
margin: EdgeInsets.all(10), margin: EdgeInsets.all(10),
width: 260, width: 260,
child: Form( child: Form(
autovalidate: true, autovalidateMode: AutovalidateMode.always,
child: TextFormField( child: TextFormField(
initialValue: widget.iconName ?? null, initialValue: widget.iconName ?? null,
validator: (text){ validator: (text){

View File

@ -30,7 +30,7 @@ class EditDialog extends StatelessWidget {
borderRadius: BorderRadius.all(Radius.circular(20.0))), borderRadius: BorderRadius.all(Radius.circular(20.0))),
title: Text(title ?? ""), title: Text(title ?? ""),
content: Form( content: Form(
autovalidate: true, autovalidateMode: AutovalidateMode.always,
child: TextFormField( child: TextFormField(
style: TextStyle(textBaseline: TextBaseline.alphabetic), style: TextStyle(textBaseline: TextBaseline.alphabetic),
initialValue: initialValue ?? "", initialValue: initialValue ?? "",

View File

@ -23,7 +23,8 @@ dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter
#intl语言包 #intl语言包
intl_translation: ^0.17.5 intl: ^0.17.0
#网络请求 #网络请求
@ -32,8 +33,6 @@ dev_dependencies:
shared_preferences: ^0.5.6+2 shared_preferences: ^0.5.6+2
#状态管理 #状态管理
provider: ^4.0.1 provider: ^4.0.1
#单元测试
test: ^1.6.0
#滑动控件 #滑动控件
carousel_slider: ^1.3.0 carousel_slider: ^1.3.0
#环形列表 #环形列表
@ -61,7 +60,7 @@ dev_dependencies:
#网页 #网页
flutter_webview_plugin: ^0.3.5 flutter_webview_plugin: ^0.3.5
#上拉加载 #上拉加载
pull_to_refresh: ^1.5.0 pull_to_refresh: ^1.6.5
#看图片 #看图片
photo_view: ^0.4.2 photo_view: ^0.4.2
#url,可以用来打开应用商店 #url,可以用来打开应用商店

View File

@ -1,4 +1,4 @@
import 'package:test/test.dart'; import 'package:flutter_test/flutter_test.dart';
//升级测试 //升级测试
void main(){ void main(){

View File

@ -1,4 +1,4 @@
import 'package:test/test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'dart:math'; import 'dart:math';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';

View File

@ -1,4 +1,4 @@
import 'package:test/test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:todo_list/utils/my_encrypt_util.dart'; import 'package:todo_list/utils/my_encrypt_util.dart';

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:test/test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:todo_list/utils/icon_utils.dart'; import 'package:todo_list/utils/icon_utils.dart';
void main() { void main() {

View File

@ -1,6 +1,7 @@
import 'package:test/test.dart';
import 'package:flutter_test/flutter_test.dart';
void main(){ void main(){

View File

@ -1,4 +1,4 @@
import 'package:test/test.dart'; import 'package:flutter_test/flutter_test.dart';

View File

@ -1,6 +1,7 @@
import 'package:test/test.dart';
import 'dart:math'; import 'dart:math';
import 'package:flutter_test/flutter_test.dart';
void main(){ void main(){
test("\n测试随机数字\n", (){ test("\n测试随机数字\n", (){